function HookCollectorPass::process

File

core/lib/Drupal/Core/Hook/HookCollectorPass.php, line 73

Class

HookCollectorPass
Collects and registers hook implementations.

Namespace

Drupal\Core\Hook

Code

public function process(ContainerBuilder $container) : void {
    $collector = static::collectAllHookImplementations($container->getParameter('container.modules'));
    $map = [];
    $container->register(ProceduralCall::class, ProceduralCall::class)
        ->addArgument($collector->includes);
    foreach ($collector->implementations as $hook => $class_implementations) {
        foreach ($class_implementations as $class => $method_hooks) {
            if ($container->has($class)) {
                $definition = $container->findDefinition($class);
            }
            else {
                $definition = $container->register($class, $class)
                    ->setAutowired(TRUE);
            }
            foreach ($method_hooks as $method => $hook_data) {
                $map[$hook][$class][$method] = $hook_data['module'];
                $definition->addTag('kernel.event_listener', [
                    'event' => "drupal_hook.{$hook}",
                    'method' => $method,
                    'priority' => $hook_data['priority'],
                ]);
            }
        }
    }
    $container->setParameter('hook_implementations_map', $map);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.