public DrupalKernel::discoverServiceProviders()
Discovers available serviceProviders.
Return value
array The available serviceProviders.
Overrides DrupalKernelInterface::discoverServiceProviders
File
- core/lib/Drupal/Core/DrupalKernel.php, line 567
 
Class
- DrupalKernel
 - The DrupalKernel class is the core of Drupal itself.
 
Namespace
Drupal\Core
Code
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', []));
}
Please login to continue.