/** * {@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())); } }
/** * 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(); }
/** * Build response from service. * * @param string $serviceId * * @return mixed */ private function getServiceController($serviceId) { if (!$this->container->has($serviceId)) { throw new RuntimeException(sprintf('Service "%s" is undefined.', $serviceId)); } return $this->container->getDi()->create($this->container->get($serviceId)); }
/** * 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(); }
/** * Initialize extension. * * @param Configuration $config * @param ContainerBuilder $container */ public function initialize(Configuration $config, ContainerBuilder $container) { $this->config = $config; $this->container = $container; $this->resource = $container->get('resource'); $this->loader = new FileLoader(); }
/** * Load service from array. * * @param array $services */ public function load(array $services) { foreach ($services as $id => $service) { if ('services' === $id) { $this->load($service); continue; } if (is_int($id) || !$this->isArrayService($service)) { continue; } $this->container->setDefinition($id, $this->buildDefinitionFromArray($id, $service)); // Build service immediately when eager is true. if (isset($service['eager']) && true === $service['eager']) { $this->container->get($id); } } }
/** * 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); }
/** * 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(); }
/** * Get configuration. * * @return Configuration */ public function getConfiguration() { return $this->container->get('config'); }
/** * {@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')); }
/** * 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); }
/** * @return AbstractKernel */ private function getKernel() { return $this->container->get('kernel'); }
/** * 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')))); }
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()); }