/** * Load extension. * * @param array $configs * @param ContainerBuilder $container */ public function load(array $configs, ContainerBuilder $container) { $loader = new FilesystemLoader($configs['paths'], $container, $configs['app_path']); $environment = new Twig_Environment($loader, $configs['options']); $container->register('twig.loader', $loader); $container->register('twig.environment', $environment); $container->load($this->loadResource('Resources/config/services.yml')); }
/** * Prepare handler. * * @param ContainerBuilder $container * @param Closure $closure * * @return Closure */ private static function prepare(ContainerBuilder $container, Closure $closure) { return function (MessageInterface $message, $handler) use($container, $closure) { $handler = $container->getDi()->createInstance($handler); $handler = $handler->getOriginalInstance(); self::assertHandleMethodExist($handler, $message); return call_user_func($closure, $message, $handler); }; }
/** * {@inheritdoc} */ protected function handle(JobInterface $job) { try { parent::handle($job); $this->container->get('cqrs.command_bus')->dispatchNow($job); } catch (\Exception $e) { $this->output->writeln(sprintf('<style name="error">%s</style>', $e->getMessage())); } }
/** * Constructor. * * @param ContainerBuilder $container * @param array $bundles */ public function __construct(ContainerBuilder $container, array $bundles) { $this->resolver = $container->getParameterBag()->getResolver(); foreach ($bundles as $bundle) { if ($bundle instanceof BundleInterface) { $this->bundlesPath['@' . $bundle->getName()] = $bundle->getPath(); } } }
/** * Load registered extensions. * * @param Configuration $configuration * @param ContainerBuilder $container */ public function load(Configuration $configuration, ContainerBuilder $container) { $resolver = $container->getParameterBag()->getResolver(); foreach ($this->extension as $alias => $extension) { $extension->initialize($configuration, $container); if ($extension instanceof PrependConfigInterface) { $extension->prepend($container); } $extension->load($resolver->resolveValue($configuration->get($alias)), $container); } }
/** * Build container * * @param KernelInterface $kernel */ private function buildContainer(KernelInterface $kernel) { $this->container = new ContainerBuilder(new ParameterBag($kernel->getKernelParameters())); $this->extension = new ExtensionManager(); $this->configuration = new Configuration(); $this->resource = new ResourceBuilder($this->container, $kernel->getBundleManager()->all()); // register some services foreach ($this->getDefaultServices($kernel) as $id => $service) { $this->container->register($id, $service, true); } // register it self. $this->container->register('container', $this->container, true); }
/** * Execute console. * * @param AbstractInput $input * @param Output $output */ protected function execute(AbstractInput $input, Output $output) { /** @var RouteCollection $routeCollection */ $routeCollection = $this->container->get('route_collection'); $table = new Table($output); $table->setHeaders(array(new Table\TableHeader('Name'), new Table\TableHeader('Method'), new Table\TableHeader('Path'), new Table\TableHeader('Action'), new Table\TableHeader('Domain'), new Table\TableHeader('Schema'), new Table\TableHeader('Middleware'))); foreach ($routeCollection->dump() as $name => $route) { $middleware = array(); $r = $routeCollection->get($name); if ($r->hasBag('middlewares')) { $middleware = $this->buildMiddlewareString($r->getBag('middlewares')->all()); } $table->addRow(array(new Table\TableCell($name), new Table\TableCell(strtoupper(empty($route['methods']) ? 'any' : implode('|', $route['methods']))), new Table\TableCell($route['path']), new Table\TableCell($route['handler']), new Table\TableCell(empty($route['domain']) ? 'ANY' : $route['domain']), new Table\TableCell(implode('|', $route['schemas'])), new Table\TableCell($middleware))); } $table->write(); }
/** * Load services from config. * * @param array $configs */ private function loadServicesFromConfig(array &$configs) { if (isset($configs['services']) && is_array($configs['services'])) { $this->container->load($configs['services']); unset($configs['services']); } }
/** * Build response from controller. * * @param string $bundleName * @param string $controller * @param array $parameters * * @return mixed */ private function getBundleController($bundleName, $controller, array $parameters) { $bundleManager = $this->kernel->getBundleManager(); if (null !== ($bundle = $bundleManager->get($bundleName))) { $class = $bundle->getNamespace() . '\\' . $this->prefix . '\\' . $controller . 'Controller'; if (!class_exists($class)) { throw new RuntimeException(sprintf('Controller "%s" is undefined.', $class)); } return $this->container->getDi()->createInstance($class, $parameters); } throw new RuntimeException(sprintf('Bundle "%s" is undefined.', $bundleName)); }
/** * Normalize array service parameters. * * @param array $service * @param string $index * * @return array */ private function normalizeParameters(array $service, $index) { if (!$this->isValidArrayParameters($service, $index)) { return array(); } $resolver = $this->container->getParameterBag()->getResolver(); $normalized = array(); foreach ($service[$index] as $index => $value) { $normalized[$index] = $this->computeValue($value, $resolver); } return $resolver->resolveValue($normalized); }
/** * Load extension. * * @param array $configs * @param ContainerBuilder $container */ public function load(array $configs, ContainerBuilder $container) { if ($container->has('request')) { new RequestFacade($container->get('request')); } /** @var KernelInterface $kernel */ $kernel = $container->get('kernel'); $routes = $this->buildRouteCollection($configs['router']['routes']); $container->register('route_collection', $routes, true); $kernel->addListenerOnce(KernelEvents::REQUEST, array(new RouterListener($routes, $configs['router']['prefix']), 'onRequest')); Log::$APP_LOG = $configs['log']['name']; $container->register('log', $this->buildLog($configs['log']), true); $container->setDefinition('template', new Definition('Borobudur\\Bundle\\FrameworkBundle\\Template\\TemplateCompiler'))->addArgument(new Reference('container'))->addArgument($configs['template']['app_path'])->share(); $container->setDefinition('acl', new Definition('Borobudur\\Acl\\Acl'))->addArgument(isset($configs['acl']) && isset($configs['acl']['policies']) ? $configs['acl']['policies'] : null)->share(); }
/** * Load resource file. * * @param string $fileName * * @return array */ protected final function loadResource($fileName) { $resolver = $this->container->getParameterBag()->getResolver(); $fileName = $resolver->resolveString($this->getBundlePath() . '/' . ltrim($fileName, '/')); $resources = $this->loader->import(new FileLocator($fileName)); $resources = $this->resource->process($this->loader, $resources); if (isset($resources['parameters']) && is_array($resources['parameters'])) { foreach ($resources['parameters'] as $name => $param) { if (!$this->container->getParameterBag()->has($name)) { $this->container->getParameterBag()->set($name, $param); } } } return $resolver->resolveValue($resources); }
/** * Build storage. * * @param ContainerBuilder $container * @param array $configs */ private function buildStorage(ContainerBuilder $container, array $configs) { $readModelStorage = $this->buildReadModelStorage($configs['read_model']['storage']); $readModelDefinition = new AbstractDefinition(get_class($readModelStorage), 'Borobudur\\Cqrs\\ReadModel\\Storage\\StorageInterface'); $container->register('cqrs.read_model_storage', $readModelStorage); $container->setDefinition('cqrs.read_model_storage', $readModelDefinition); if (true === $configs['snapshot']['enable']) { $snapshot = $this->buildSnapshot($configs['snapshot']['storage']); $snapshotDefinition = new AbstractDefinition(get_class($snapshot), 'Borobudur\\EventSourcing\\Snapshot\\SnapshotInterface'); $container->register('cqrs.snapshot', $snapshot); $container->setDefinition('cqrs.snapshot', $snapshotDefinition); $container->get('cqrs.snapshot')->setSnapshotPeriodical($configs['snapshot']['periodically']); } $eventStore = $this->buildEventStore($configs['event_store']['storage']); $eventStoreDefinition = new AbstractDefinition(get_class($eventStore), 'Borobudur\\EventSourcing\\Storage\\StorageInterface'); $container->register('cqrs.event_store', $eventStore); $container->setDefinition('cqrs.event_store', $eventStoreDefinition); if (true === $configs['snapshot']['enable']) { $container->get('cqrs.event_store')->attachSnapshot($container->get('cqrs.snapshot')); } $container->register('cqrs.uow_transaction', new UnitOfWorkTransaction(array($container->get('cqrs.read_model_storage'), $container->get('cqrs.event_store')))); }
/** * Load extension. * * @param array $configs * @param ContainerBuilder $container */ public function load(array $configs, ContainerBuilder $container) { $container->getParameterBag()->set('app.locale', $configs['locale']); $container->getParameterBag()->set('app.port', $configs['port']); $container->load($this->loadResource('Resources/configs/services.yml')); }
/** * Constructor. * * @param ContainerBuilder $container * @param string $appPath */ public function __construct(ContainerBuilder $container, $appPath) { $this->container = $container; $this->locator = new TemplateFileLocator($this->container->get('kernel')->getBundleManager(), $appPath); }
/** * Generate route path. * * @param string $name * @param array $params * * @return RequestContext */ public function generateRoute($name, array $params = array()) { return $this->container->get('router')->generateRoute($name, $params)->getPath(); }
/** * Constructor. * * @param array $paths * @param ContainerBuilder $container * @param string $appPath */ public function __construct($paths = array(), ContainerBuilder $container, $appPath) { parent::__construct($paths); $this->locator = new TemplateFileLocator($container->get('kernel')->getBundleManager(), $appPath); }
/** * {@inheritdoc} */ public function build(ContainerBuilder $container) { $container->addTag(new UnitOfWorkTransactionTag()); }
/** * {@inheritdoc} */ public function build(ContainerBuilder $container) { $container->addTag(new TwigExtensionTag()); }
/** * Add consoles. * * @param array $consoles */ private function add(array $consoles, ContainerBuilder $container) { foreach ($consoles as $console) { if (is_string($console)) { $instance = $container->getDi()->createInstance($console); /** @var AbstractConsole $console */ $console = $instance->getOriginalInstance(); } $this->addConsole($console); } }
/** * @return string */ private function getDefaultLog() { return $this->container->getParameterBag()->getResolver()->resolveString('%kernel.root_dir%/../var/log/%kernel.environment%/server.log'); }
public function testDefineAbstractServiceFromArray() { $services = array('iqbal' => array('class' => 'Borobudur\\DependencyInjection\\Test\\Iqbal', 'abstract' => 'Borobudur\\DependencyInjection\\Test\\WarriorInterface'), 'battle' => array('class' => 'Borobudur\\DependencyInjection\\Test\\Battle')); $container = new ContainerBuilder(); $container->load($services); $battle = $container->get('battle'); $this->assertEquals('iqbal', $battle->warrior->getName()); $this->assertEquals('fighter', $battle->warrior->getType()); }
/** * @return AbstractKernel */ private function getKernel() { return $this->container->get('kernel'); }
/** * {@inheritdoc} */ public function load(array $configs, ContainerBuilder $container) { $container->load($this->loadResource('Resources/config/services.yml')); $container->get('cqrs.event_bus')->registers($this->loadResource('Resources/config/messages/event.yml')); }
/** * Get configuration. * * @return Configuration */ public function getConfiguration() { return $this->container->get('config'); }
/** * {@inheritdoc} */ public function build(ContainerBuilder $container) { $container->addTag(new TemplateCompilerTag()); }
/** * {@inheritdoc} */ public function process(ContainerBuilder $container, $id, array $attributes) { $definition = $container->getDefinition('twig'); $definition->addMethodCall('addExtension', array(new Reference($id))); }
/** * {@inheritdoc} */ public function process(ContainerBuilder $container, $id, array $attributes) { $definition = $container->getDefinition('cqrs.uow_transaction'); $definition->addMethodCall('add', array(new Reference($id))); }