예제 #1
0
파일: Kernel.php 프로젝트: hopus/common
 /**
  * Builds the container
  */
 protected function buildContainer()
 {
     $this->container->add('kernel', $this);
     $this->container->add('base_dir', $this->baseDir);
     /**
      * Templating
      */
     $loader = new \Twig_Loader_Filesystem($this->baseDir . '/' . $this->container->get('config')->get('hopus.templates.dir'));
     $twig = new \Twig_Environment($loader, ['cache' => $this->withCache ? $this->baseDir . '/' . $this->container->get('config')->get('hopus.cache.dir') . '/templating' : false]);
     $twig->addExtension(new ContentExtension($this->baseDir . '/' . $this->container->get('config')->get('hopus.contents.dir')));
     $this->container->share('templating', $twig);
     /**
      * Http
      */
     $this->container->share('request_stack', new RequestStack());
     $this->container->get('request_stack')->push(Request::createFromGlobals());
     /**
      * Events
      */
     $this->container->share('event_emitter', new Emitter());
     /**
      * Puli
      */
     $factoryClass = PULI_FACTORY_CLASS;
     $factory = new $factoryClass();
     $repo = $factory->createRepository();
     $discovery = $factory->createDiscovery($repo);
     //$discovery->addBindingType(new BindingType(PluginManager::PLUGIN_BINDING_TYPE));
     //$discovery->addBindingType(new BindingType(Application::COMMAND_BINDING_TYPE));
     $this->container->share('puli_discovery', $discovery);
 }
예제 #2
0
파일: Service.php 프로젝트: phprest/phprest
 /**
  * @param ContainerInterface $container
  * @param Configurable $config
  *
  * @return void
  */
 public function register(ContainerInterface $container, Configurable $config)
 {
     if (!$config instanceof Config) {
         throw new \InvalidArgumentException('Wrong Config object');
     }
     $logger = new Logger($config->name, $config->handlers);
     $container->add($config->getServiceName(), $logger);
 }
 /**
  * @param ContainerInterface $container
  * @param Configurable $config
  *
  * @return void
  */
 public function register(ContainerInterface $container, Configurable $config)
 {
     if (!$config instanceof Config) {
         throw new \InvalidArgumentException('Wrong Config object');
     }
     $requestFilter = new RequestFilter($config);
     $container->add($config->getServiceName(), $requestFilter);
 }
예제 #4
0
 /**
  * @param ContainerInterface $container
  * @param Configurable $config
  *
  * @return void
  */
 public function register(ContainerInterface $container, Configurable $config)
 {
     if (!$config instanceof Config) {
         throw new \InvalidArgumentException('Wrong Config object');
     }
     $entityManager = EntityManager::create($config->database, Setup::createAnnotationMetadataConfiguration($config->annotationDirs, $config->dev, $config->proxyDir, $config->cache, false));
     $container->add($config->getServiceName(), $entityManager);
 }
예제 #5
0
파일: Container.php 프로젝트: khelle/surume
 /**
  * @param string $alias
  * @param callable $factoryMethod
  * @param mixed[] $parameters
  * @throws IoWriteException
  */
 public function factory($alias, callable $factoryMethod, $parameters = [])
 {
     try {
         $this->container->add($alias, new FactoryMethod($factoryMethod, $parameters), true);
     } catch (Error $ex) {
         throw new IoWriteException("Binding factory of [{$alias}] to Container failed.", $ex);
     } catch (Exception $ex) {
         throw new IoWriteException("Binding factory of [{$alias}] to Container failed.", $ex);
     }
 }
예제 #6
0
 /**
  * @param ContainerInterface $container
  * @param Configurable $config
  *
  * @return void
  */
 public function register(ContainerInterface $container, Configurable $config)
 {
     if (!$config instanceof Config) {
         throw new \InvalidArgumentException('Wrong Config object');
     }
     $validator = Validation::createValidatorBuilder();
     if ($config->annotationMapping) {
         $validator->enableAnnotationMapping();
     }
     $container->add($config->getServiceName(), $validator->getValidator());
 }
예제 #7
0
 public function performRequest(RequestInterface $request) : ResponseInterface
 {
     $this->dependencyContainer->add('fuel.application.request', $request);
     // trigger request started event
     $this->dependencyContainer->get('fuel.application.event')->emit(new RequestStarted($this));
     // route to and call controller
     $match = $this->getRouteMatch($request);
     $response = $this->getControllerResult($match);
     // trigger request ended event
     $this->dependencyContainer->get('fuel.application.event')->emit(new RequestFinished($this));
     return $response;
 }
예제 #8
0
파일: Service.php 프로젝트: phprest/phprest
 /**
  * @param ContainerInterface $container
  * @param Configurable $config
  *
  * @return void
  */
 public function register(ContainerInterface $container, Configurable $config)
 {
     if (!$config instanceof Config) {
         throw new \InvalidArgumentException('Wrong Config object');
     }
     $hateoas = HateoasBuilder::create();
     $hateoas->setDebug($config->debug);
     $hateoas->setUrlGenerator(null, new CallableUrlGenerator($config->urlGenerator));
     if (!$config->debug) {
         $hateoas->setCacheDir($config->cacheDir);
         $hateoas->addMetadataDir($config->metadataDir);
     }
     $container->add($config->getServiceName(), $hateoas->build());
 }
예제 #9
0
파일: Robo.php 프로젝트: jjok/Robo
 /**
  * Initialize a container with all of the default Robo services.
  * IMPORTANT:  after calling this method, clients MUST call:
  *
  * $dispatcher = $container->get('eventDispatcher');
  * $app->setDispatcher($dispatcher);
  *
  * Any modification to the container should be done prior to fetching
  * objects from it.
  *
  * It is recommended to use \Robo::createDefaultContainer()
  * instead, which does all required setup for the caller, but has
  * the limitation that the container it creates can only be
  * extended, not modified.
  *
  * @param \League\Container\ContainerInterface $container
  * @param \Symfony\Component\Console\Application $app
  * @param \Robo\Config $config
  * @param null|\Symfony\Component\Console\Input\InputInterface $input
  * @param null|\Symfony\Component\Console\Output\OutputInterface $output
  */
 public static function configureContainer(ContainerInterface $container, SymfonyApplication $app, Config $config, $input = null, $output = null)
 {
     // Self-referential container refernce for the inflector
     $container->add('container', $container);
     static::setContainer($container);
     // Create default input and output objects if they were not provided
     if (!$input) {
         $input = new StringInput('');
     }
     if (!$output) {
         $output = new \Symfony\Component\Console\Output\ConsoleOutput();
     }
     $config->setDecorated($output->isDecorated());
     $container->share('application', $app);
     $container->share('config', $config);
     $container->share('input', $input);
     $container->share('output', $output);
     // Register logging and related services.
     $container->share('logStyler', \Robo\Log\RoboLogStyle::class);
     $container->share('logger', \Robo\Log\RoboLogger::class)->withArgument('output')->withMethodCall('setLogOutputStyler', ['logStyler']);
     $container->add('progressBar', \Symfony\Component\Console\Helper\ProgressBar::class)->withArgument('output');
     $container->share('progressIndicator', \Robo\Common\ProgressIndicator::class)->withArgument('progressBar')->withArgument('output');
     $container->share('resultPrinter', \Robo\Log\ResultPrinter::class);
     $container->add('simulator', \Robo\Task\Simulator::class);
     $container->share('globalOptionsEventListener', \Robo\GlobalOptionsEventListener::class);
     $container->share('collectionProcessHook', \Robo\Collection\CollectionProcessHook::class);
     $container->share('hookManager', \Consolidation\AnnotatedCommand\Hooks\HookManager::class)->withMethodCall('addResultProcessor', ['collectionProcessHook', '*']);
     $container->share('alterOptionsCommandEvent', \Consolidation\AnnotatedCommand\Options\AlterOptionsCommandEvent::class)->withArgument('application');
     $container->share('eventDispatcher', \Symfony\Component\EventDispatcher\EventDispatcher::class)->withMethodCall('addSubscriber', ['globalOptionsEventListener'])->withMethodCall('addSubscriber', ['alterOptionsCommandEvent'])->withMethodCall('addSubscriber', ['hookManager']);
     $container->share('formatterManager', \Consolidation\OutputFormatters\FormatterManager::class)->withMethodCall('addDefaultFormatters', [])->withMethodCall('addDefaultSimplifiers', []);
     $container->share('commandProcessor', \Consolidation\AnnotatedCommand\CommandProcessor::class)->withArgument('hookManager')->withMethodCall('setFormatterManager', ['formatterManager'])->withMethodCall('setDisplayErrorFunction', [function ($output, $message) use($container) {
         $logger = $container->get('logger');
         $logger->error($message);
     }]);
     $container->share('commandFactory', \Consolidation\AnnotatedCommand\AnnotatedCommandFactory::class)->withMethodCall('setCommandProcessor', ['commandProcessor']);
     $container->add('collection', \Robo\Collection\Collection::class);
     $container->add('collectionBuilder', \Robo\Collection\CollectionBuilder::class);
     static::addInflectors($container);
     // Make sure the application is appropriately initialized.
     $app->setAutoExit(false);
 }
예제 #10
0
 /**
  * @param \League\Container\ContainerInterface $app
  */
 protected function registerEngine(ContainerInterface $app)
 {
     $app->add('Plates.Engine', new Engine(null, $app->config('plates.extension')));
     $themeDir = vsprintf('%s/%s', [$app->config('plates.templatesDir'), $app->config('app.theme')]);
     $app->get('Plates.Engine')->addFolder('theme', $themeDir);
 }
예제 #11
0
 /**
  * Set a container.
  *
  * @param \League\Container\ContainerInterface $container
  */
 public function setContainer(ContainerInterface $container)
 {
     $this->container = $container;
     $this->container->add('app', $this);
 }
예제 #12
0
 /**
  * Register the necessary classes for Terminus
  *
  * @param \League\Container\ContainerInterface $container
  */
 private function configureContainer(ContainerInterface $container)
 {
     // Add the services.
     $container->share('request', Request::class);
     $container->inflector(RequestAwareInterface::class)->invokeMethod('setRequest', ['request']);
     $session_store = new FileStore($this->config->get('cache_dir'));
     $session = new Session($session_store);
     $container->share('session', $session);
     $container->inflector(SessionAwareInterface::class)->invokeMethod('setSession', ['session']);
     $token_store = new FileStore($this->config->get('tokens_dir'));
     $container->inflector(SavedTokens::class)->invokeMethod('setDataStore', [$token_store]);
     // Add the models and collections
     $container->add(User::class);
     $container->add(SavedTokens::class);
     $container->add(SavedToken::class);
     $container->add(PaymentMethods::class);
     $container->add(PaymentMethod::class);
     $container->add(SSHKeys::class);
     $container->add(SSHKey::class);
     $container->add(Workflows::class);
     $container->add(Workflow::class);
     $container->add(WorkflowOperation::class);
     $container->add(MachineTokens::class);
     $container->add(MachineToken::class);
     $container->add(Upstream::class);
     $container->add(Upstreams::class);
     $container->add(UserSiteMemberships::class);
     $container->add(UserSiteMembership::class);
     $container->add(UserOrganizationMemberships::class);
     $container->add(UserOrganizationMembership::class);
     $container->add(OrganizationSiteMemberships::class);
     $container->add(OrganizationSiteMembership::class);
     $container->add(OrganizationUserMemberships::class);
     $container->add(OrganizationUserMembership::class);
     $container->add(Organization::class);
     $container->add(Branches::class);
     $container->add(Branch::class);
     $container->add(SiteUserMemberships::class);
     $container->add(SiteUserMembership::class);
     $container->add(SiteOrganizationMemberships::class);
     $container->add(SiteOrganizationMembership::class);
     $container->add(Site::class);
     $container->add(Redis::class);
     $container->add(Solr::class);
     $container->add(Environments::class);
     $container->add(Environment::class);
     $container->add(Backups::class);
     $container->add(Backup::class);
     $container->add(Lock::class);
     $container->add(Bindings::class);
     $container->add(Binding::class);
     $container->add(Domains::class);
     $container->add(Domain::class);
     $container->add(Commits::class);
     $container->add(Commit::class);
     $container->add(NewRelic::class);
     $container->add(Tags::class);
     $container->add(Tag::class);
     $container->share('sites', Sites::class);
     $container->inflector(SiteAwareInterface::class)->invokeMethod('setSites', ['sites']);
     // Add the commands.
     $factory = $container->get('commandFactory');
     $factory->setIncludeAllPublicMethods(false);
     $commands_directory = __DIR__ . '/Commands';
     $top_namespace = 'Pantheon\\Terminus\\Commands';
     $this->commands = $this->getCommands(['path' => $commands_directory, 'namespace' => $top_namespace]);
     $this->commands[] = 'Pantheon\\Terminus\\Authorizer';
 }