コード例 #1
0
 /**
  * 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'));
 }
コード例 #2
0
 /**
  * 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()));
 }
コード例 #3
0
 /**
  * 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);
 }
コード例 #4
0
 /**
  * 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();
 }
コード例 #5
0
 /**
  * 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'))));
 }