Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. ResettableServicePass.php

function ResettableServicePass::process

Overrides CompilerPassInterface::process

File

vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php, line 26

Class

ResettableServicePass
@author Alexander M. Turek <me@derrabus.de>

Namespace

Symfony\Component\HttpKernel\DependencyInjection

Code

public function process(ContainerBuilder $container) : void {
    if (!$container->has('services_resetter')) {
        return;
    }
    $services = $methods = [];
    foreach ($container->findTaggedServiceIds('kernel.reset', true) as $id => $tags) {
        $services[$id] = new Reference($id, ContainerInterface::IGNORE_ON_UNINITIALIZED_REFERENCE);
        foreach ($tags as $attributes) {
            if (!isset($attributes['method'])) {
                throw new RuntimeException(\sprintf('Tag "kernel.reset" requires the "method" attribute to be set on service "%s".', $id));
            }
            if (!isset($methods[$id])) {
                $methods[$id] = [];
            }
            if ('ignore' === ($attributes['on_invalid'] ?? null)) {
                $attributes['method'] = '?' . $attributes['method'];
            }
            $methods[$id][] = $attributes['method'];
        }
    }
    if (!$services) {
        $container->removeAlias('services_resetter');
        $container->removeDefinition('services_resetter');
        return;
    }
    $container->findDefinition('services_resetter')
        ->setArgument(0, new IteratorArgument($services))
        ->setArgument(1, $methods);
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal