Ejemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function discoverServiceProviders()
 {
     $this->serviceYamls = array('app' => array(), 'site' => array());
     $this->serviceProviderClasses = array('app' => array(), 'site' => array());
     $this->serviceYamls['app']['core'] = 'core/core.services.yml';
     $this->serviceProviderClasses['app']['core'] = 'Drupal\\Core\\CoreServiceProvider';
     // Retrieve enabled modules and register their namespaces.
     if (!isset($this->moduleList)) {
         $extensions = $this->getConfigStorage()->read('core.extension');
         $this->moduleList = isset($extensions['module']) ? $extensions['module'] : array();
     }
     $module_filenames = $this->getModuleFileNames();
     $this->classLoaderAddMultiplePsr4($this->getModuleNamespacesPsr4($module_filenames));
     // Load each module's serviceProvider class.
     foreach ($module_filenames as $module => $filename) {
         $camelized = ContainerBuilder::camelize($module);
         $name = "{$camelized}ServiceProvider";
         $class = "Drupal\\{$module}\\{$name}";
         if (class_exists($class)) {
             $this->serviceProviderClasses['app'][$module] = $class;
         }
         $filename = dirname($filename) . "/{$module}.services.yml";
         if (file_exists($filename)) {
             $this->serviceYamls['app'][$module] = $filename;
         }
     }
     // Add site-specific service providers.
     if (!empty($GLOBALS['conf']['container_service_providers'])) {
         foreach ($GLOBALS['conf']['container_service_providers'] as $class) {
             if (class_exists($class)) {
                 $this->serviceProviderClasses['site'][] = $class;
             }
         }
     }
     if (!$this->addServiceFiles(Settings::get('container_yamls'))) {
         throw new \Exception('The container_yamls setting is missing from settings.php');
     }
 }