3 namespace Drupal\Core\DependencyInjection\Compiler;
5 use Drupal\Core\DrupalKernelInterface;
6 use Drupal\Core\DependencyInjection\ServiceModifierInterface;
7 use Symfony\Component\DependencyInjection\ContainerBuilder;
8 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
11 * Passes the container to the alter() method of all service providers.
13 class ModifyServiceDefinitionsPass implements CompilerPassInterface {
18 public function process(ContainerBuilder $container) {
19 if (!$container->has('kernel')) {
23 $kernel = $container->get('kernel');
24 if (!($kernel instanceof DrupalKernelInterface)) {
27 $providers = $kernel->getServiceProviders('app');
28 foreach ($providers as $provider) {
29 if ($provider instanceof ServiceModifierInterface) {
30 $provider->alter($container);
33 $providers = $kernel->getServiceProviders('site');
34 foreach ($providers as $provider) {
35 if ($provider instanceof ServiceModifierInterface) {
36 $provider->alter($container);