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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 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.