Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 44 |
CoreServiceProvider | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
72 | |
0.00% |
0 / 44 |
register | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 27 |
|||
registerUuid | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 10 |
|||
registerTest | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 7 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\CoreServiceProvider. | |
*/ | |
namespace Drupal\Core; | |
use Drupal\Core\Cache\Context\CacheContextsPass; | |
use Drupal\Core\Cache\ListCacheBinsPass; | |
use Drupal\Core\DependencyInjection\Compiler\BackendCompilerPass; | |
use Drupal\Core\DependencyInjection\Compiler\GuzzleMiddlewarePass; | |
use Drupal\Core\DependencyInjection\Compiler\ContextProvidersPass; | |
use Drupal\Core\DependencyInjection\Compiler\ProxyServicesPass; | |
use Drupal\Core\DependencyInjection\Compiler\RegisterLazyRouteEnhancers; | |
use Drupal\Core\DependencyInjection\Compiler\RegisterLazyRouteFilters; | |
use Drupal\Core\DependencyInjection\Compiler\DependencySerializationTraitPass; | |
use Drupal\Core\DependencyInjection\Compiler\StackedKernelPass; | |
use Drupal\Core\DependencyInjection\Compiler\StackedSessionHandlerPass; | |
use Drupal\Core\DependencyInjection\Compiler\RegisterStreamWrappersPass; | |
use Drupal\Core\DependencyInjection\Compiler\TwigExtensionPass; | |
use Drupal\Core\DependencyInjection\ServiceProviderInterface; | |
use Drupal\Core\DependencyInjection\ContainerBuilder; | |
use Drupal\Core\DependencyInjection\Compiler\ModifyServiceDefinitionsPass; | |
use Drupal\Core\DependencyInjection\Compiler\TaggedHandlersPass; | |
use Drupal\Core\DependencyInjection\Compiler\RegisterEventSubscribersPass; | |
use Drupal\Core\DependencyInjection\Compiler\RegisterAccessChecksPass; | |
use Drupal\Core\DependencyInjection\Compiler\RegisterServicesForDestructionPass; | |
use Drupal\Core\Plugin\PluginManagerPass; | |
use Drupal\Core\Render\MainContent\MainContentRenderersPass; | |
use Drupal\Core\Site\Settings; | |
use Symfony\Component\DependencyInjection\Compiler\PassConfig; | |
/** | |
* ServiceProvider class for mandatory core services. | |
* | |
* This is where Drupal core registers all of its compiler passes. | |
* The service definitions themselves are in core/core.services.yml with a | |
* few, documented exceptions (typically, install requirements). | |
* | |
* Modules wishing to register services to the container should use | |
* modulename.services.yml in their respective directories. | |
* | |
* @ingroup container | |
*/ | |
class CoreServiceProvider implements ServiceProviderInterface { | |
/** | |
* {@inheritdoc} | |
*/ | |
public function register(ContainerBuilder $container) { | |
$this->registerUuid($container); | |
$this->registerTest($container); | |
// Only register the private file stream wrapper if a file path has been set. | |
if (Settings::get('file_private_path')) { | |
$container->register('stream_wrapper.private', 'Drupal\Core\StreamWrapper\PrivateStream') | |
->addTag('stream_wrapper', ['scheme' => 'private']); | |
} | |
// Add the compiler pass that lets service providers modify existing | |
// service definitions. This pass must come first so that later | |
// list-building passes are operating on the post-alter services list. | |
$container->addCompilerPass(new ModifyServiceDefinitionsPass()); | |
$container->addCompilerPass(new ProxyServicesPass()); | |
$container->addCompilerPass(new BackendCompilerPass()); | |
$container->addCompilerPass(new StackedKernelPass()); | |
$container->addCompilerPass(new StackedSessionHandlerPass()); | |
$container->addCompilerPass(new MainContentRenderersPass()); | |
// Collect tagged handler services as method calls on consumer services. | |
$container->addCompilerPass(new TaggedHandlersPass()); | |
$container->addCompilerPass(new RegisterStreamWrappersPass()); | |
$container->addCompilerPass(new GuzzleMiddlewarePass()); | |
$container->addCompilerPass(new TwigExtensionPass()); | |
// Add a compiler pass for registering event subscribers. | |
$container->addCompilerPass(new RegisterEventSubscribersPass(), PassConfig::TYPE_AFTER_REMOVING); | |
$container->addCompilerPass(new RegisterAccessChecksPass()); | |
$container->addCompilerPass(new RegisterLazyRouteEnhancers()); | |
$container->addCompilerPass(new RegisterLazyRouteFilters()); | |
// Add a compiler pass for registering services needing destruction. | |
$container->addCompilerPass(new RegisterServicesForDestructionPass()); | |
// Add the compiler pass that will process the tagged services. | |
$container->addCompilerPass(new ListCacheBinsPass()); | |
$container->addCompilerPass(new CacheContextsPass()); | |
$container->addCompilerPass(new ContextProvidersPass()); | |
// Register plugin managers. | |
$container->addCompilerPass(new PluginManagerPass()); | |
$container->addCompilerPass(new DependencySerializationTraitPass()); | |
} | |
/** | |
* Determines and registers the UUID service. | |
* | |
* @param \Drupal\Core\DependencyInjection\ContainerBuilder $container | |
* The container builder. | |
* | |
* @return string | |
* Class name for the UUID service. | |
*/ | |
public static function registerUuid(ContainerBuilder $container) { | |
$uuid_class = 'Drupal\Component\Uuid\Php'; | |
// Debian/Ubuntu uses the (broken) OSSP extension as their UUID | |
// implementation. The OSSP implementation is not compatible with the | |
// PECL functions. | |
if (function_exists('uuid_create') && !function_exists('uuid_make')) { | |
$uuid_class = 'Drupal\Component\Uuid\Pecl'; | |
} | |
// Try to use the COM implementation for Windows users. | |
elseif (function_exists('com_create_guid')) { | |
$uuid_class = 'Drupal\Component\Uuid\Com'; | |
} | |
$container->register('uuid', $uuid_class); | |
return $uuid_class; | |
} | |
/** | |
* Registers services and event subscribers for a site under test. | |
* | |
* @param \Drupal\Core\DependencyInjection\ContainerBuilder $container | |
* The container builder. | |
*/ | |
protected function registerTest(ContainerBuilder $container) { | |
// Do nothing if we are not in a test environment. | |
if (!drupal_valid_test_ua()) { | |
return; | |
} | |
// Add the HTTP request middleware to Guzzle. | |
$container | |
->register('test.http_client.middleware', 'Drupal\Core\Test\HttpClientMiddleware\TestHttpClientMiddleware') | |
->addTag('http_client_middleware'); | |
} | |
} |