/** * 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')); }
/** * Request listener. * * @param ResponseEvent $event */ public function onRequest(ResponseEvent $event) { $router = new Router($this->collection); $request = $event->getRequest(); $this->kernel = $event->getKernel(); $this->container = $this->kernel->getContainer(); $this->middleware = $this->kernel->getMiddleware(); $this->responseEvent = $event; $this->container->register('router', $router, true); $router->setHandler($this); $router->listen(new RequestContext($request->getUri()->getPathInfo(), $request->getMethod(), $request->getQueryString(), $request->getSchemaHost()->getHost(), $request->getSchemaHost()->getSchema(), $request->getSchemaHost()->getPort())); }
/** * 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); }
/** * 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 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')))); }