/** * {@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'); } }