示例#1
0
 /**
  * Load console from extension.
  *
  * @param KernelInterface $kernel
  */
 private function loadConsoles(KernelInterface $kernel)
 {
     foreach ($kernel->getBundleManager()->all() as $bundle) {
         foreach ((array) $bundle->getContainerExtensions() as $extension) {
             if ($extension instanceof LoadConsoleInterface) {
                 $this->add((array) $extension->loadConsole(), $kernel->getContainer());
             }
         }
     }
 }
 /**
  * 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));
 }
 /**
  * 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);
 }
 /**
  * {@inheritdoc}
  */
 public function initialize(KernelInterface $kernel)
 {
     $kernel->getBundleManager()->add($this->getBundles($kernel));
 }