/** * 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); }
/** * @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); }
/** * @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); }
/** * @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); } }
/** * @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()); }
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; }
/** * @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()); }
/** * 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); }
/** * @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); }
/** * Set a container. * * @param \League\Container\ContainerInterface $container */ public function setContainer(ContainerInterface $container) { $this->container = $container; $this->container->add('app', $this); }
/** * 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'; }