예제 #1
0
파일: Rails.php 프로젝트: railsphp/railsphp
 public static function services()
 {
     if (!self::$serviceManager) {
         self::$serviceManager = new Rails\ServiceManager\ServiceManager();
     }
     return self::$serviceManager;
 }
예제 #2
0
 /**
  * Boot Rails.
  *
  * It requires at least paths to libraries and/or Composer Autoloader
  * to autoload classes. An instance of Rails\Loader\Loader can also be
  * passed instead.
  *
  * @param array $config
  */
 public static function boot(array $config)
 {
     if (self::$booted) {
         return;
     }
     /**
      * Loader.
      */
     if (!isset($config['loader'])) {
         throw new BadMethodCallException('Requires at least loader instance or configuration');
     } else {
         if (is_array($config['loader'])) {
             // require_once __DIR__ . '/Rails/Loader/Loader.php';
             $loader = new Rails\Loader\Loader();
             if (isset($config['loader']['paths'])) {
                 $loader->addPaths($config['loader']['paths']);
             }
             if (isset($config['loader']['composerAutoloader'])) {
                 $loader->setComposerAutoloader($config['loader']['composerAutoloader']);
             } else {
                 $loader->addPath(__DIR__ . '/Rails');
             }
             $loader->register();
         } elseif ($config['loader'] instanceof Rails\Loader\Loader) {
             $loader = $config['loader'];
         } else {
             throw new InvalidArgumentException(sprintf('Loader must be either array or instance of Rails\\Loader\\Loader, %s passed', gettype($config['loader'])));
         }
     }
     /**
      * Service Manager.
      */
     $sm = new Zend\ServiceManager\ServiceManager();
     self::$serviceManager = $sm;
     $sm->setService('loader', $loader);
     /**
      * Global configuration.
      */
     $sm->setService('rails.config', new Rails\ActiveSupport\ArrayObject(['use_cache' => false]));
     /**
      * Inflector.
      */
     $sm->setFactory('inflector', function () {
         return new Rails\ActiveSupport\Inflector\Inflector(new Rails\ActiveSupport\Inflector\Inflections\EnglishInflections(), 'en');
     });
     /**
      * Translator.
      */
     $sm->setFactory('i18n', function () {
         $tr = new Rails\I18n\LoadingTranslator();
         $tr->setDefaultLocale('en');
         $tr->setLoader(new Rails\I18n\Loader());
         # Add Rails' locales paths to i18n loader
         $tr->loader()->addPaths([__DIR__ . '/Rails/ActiveSupport/Carbon/locales', __DIR__ . '/Rails/I18n/locales']);
         return $tr;
     });
     self::$booted = true;
 }
 public static function getService($name)
 {
     return \Rails::serviceManager()->get($name);
 }