Esempio n. 1
0
 /**
  * @param DnaConfiguration $dna
  * 
  * @return \Nucleus\IService\DependencyInjection\IServiceContainer
  */
 protected function loadServiceContainer($dna)
 {
     $cachePath = $dna->freezeCachePath()->getCachePath();
     $class = 'ServiceContainer' . md5($cachePath);
     $file = $cachePath . '/serviceContainer/' . $class . '.php';
     $containerConfigCache = new ConfigCache($file, $dna->getDebug());
     $isNew = false;
     if (!class_exists($class)) {
         if (!$containerConfigCache->isFresh()) {
             $container = new ContainerBuilder();
             $nucleusCompilerPass = new NucleusCompilerPass($dna);
             $container->addCompilerPass($nucleusCompilerPass);
             $container->compile();
             $dumper = new PhpDumper($container);
             $containerConfigCache->write($dumper->dump(array('class' => $class, 'nucleus' => $nucleusCompilerPass->getConfiguration())), $container->getResources());
             $isNew = true;
         }
         require $file;
     }
     $serviceContainer = new $class();
     /* @var $serviceContainer \Nucleus\DependencyInjection\BaseServiceContainer */
     $serviceContainer->initialize();
     if ($isNew) {
         $serviceContainer->getServiceByName(IEventDispatcherService::NUCLEUS_SERVICE_NAME)->dispatch('ServiceContainer.postDump', $serviceContainer, array('containerBuilder' => $container, 'dnaConfiguration' => $dna));
     }
     return $serviceContainer;
 }
Esempio n. 2
0
 public function __construct(DnaConfiguration $dna)
 {
     $this->dnaConfiguration = $dna;
     $fileLoader = new ConfigurationFileLoader();
     $dna->prependConfiguration(__DIR__ . "/nucleus.json");
     $configuration = $fileLoader->load($dna->getConfiguration());
     //We set/override the debug value base on the debug in dna configuration
     //So it can be reuse in the service container
     $configuration['services']['configuration']['configuration']['debug'] = $dna->getDebug();
     $configuration['services']['configuration']['configuration']['cachePath'] = $dna->getCachePath();
     $this->dnaConfiguration->setConfiguration($configuration);
     $this->configuration = $this->dnaConfiguration->getConfiguration();
     $this->loaderFiles = $fileLoader->getLoadedFiles();
     $this->setDefaultConfiguration();
 }