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

Breadcrumb

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

function ResolveHotPathPass::processValue

Overrides AbstractRecursivePass::processValue

File

vendor/symfony/dependency-injection/Compiler/ResolveHotPathPass.php, line 40

Class

ResolveHotPathPass
Propagate "container.hot_path" tags to referenced services.

Namespace

Symfony\Component\DependencyInjection\Compiler

Code

protected function processValue(mixed $value, bool $isRoot = false) : mixed {
    if ($value instanceof ArgumentInterface) {
        return $value;
    }
    if ($value instanceof Definition && $isRoot) {
        if ($value->isDeprecated()) {
            return $value->clearTag('container.hot_path');
        }
        $this->resolvedIds[$this->currentId] = true;
        if (!$value->hasTag('container.hot_path')) {
            return $value;
        }
    }
    if ($value instanceof Reference && ContainerBuilder::IGNORE_ON_UNINITIALIZED_REFERENCE !== $value->getInvalidBehavior() && $this->container
        ->hasDefinition($id = (string) $value)) {
        $definition = $this->container
            ->getDefinition($id);
        if ($definition->isDeprecated() || $definition->hasTag('container.hot_path')) {
            return $value;
        }
        $definition->addTag('container.hot_path');
        if (isset($this->resolvedIds[$id])) {
            parent::processValue($definition, false);
        }
        return $value;
    }
    return parent::processValue($value, $isRoot);
}
RSS feed
Powered by Drupal