public function DrupalKernel::discoverServiceProviders in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/lib/Drupal/Core/DrupalKernel.php \Drupal\Core\DrupalKernel::discoverServiceProviders()
Discovers available serviceProviders.
Return value
array The available serviceProviders.
Overrides DrupalKernelInterface::discoverServiceProviders
3 calls to DrupalKernel::discoverServiceProviders()
- DrupalKernel::initializeServiceProviders in core/
lib/ Drupal/ Core/ DrupalKernel.php - Registers all service providers to the kernel.
- TestRunnerKernel::discoverServiceProviders in core/
lib/ Drupal/ Core/ Test/ TestRunnerKernel.php - Discovers available serviceProviders.
- UpdateKernel::discoverServiceProviders in core/
lib/ Drupal/ Core/ Update/ UpdateKernel.php - Discovers available serviceProviders.
2 methods override DrupalKernel::discoverServiceProviders()
- TestRunnerKernel::discoverServiceProviders in core/
lib/ Drupal/ Core/ Test/ TestRunnerKernel.php - Discovers available serviceProviders.
- UpdateKernel::discoverServiceProviders in core/
lib/ Drupal/ Core/ Update/ UpdateKernel.php - Discovers available serviceProviders.
File
- core/
lib/ Drupal/ Core/ DrupalKernel.php, line 552 - Contains \Drupal\Core\DrupalKernel.
Class
- DrupalKernel
- The DrupalKernel class is the core of Drupal itself.
Namespace
Drupal\CoreCode
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 (is_string($class) && class_exists($class) || is_object($class) && ($class instanceof ServiceProviderInterface || $class instanceof ServiceModifierInterface)) {
$this->serviceProviderClasses['site'][] = $class;
}
}
}
$this
->addServiceFiles(Settings::get('container_yamls', []));
}