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

Breadcrumb

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

function ResolveParameterPlaceHoldersPass::processValue

Overrides AbstractRecursivePass::processValue

File

vendor/symfony/dependency-injection/Compiler/ResolveParameterPlaceHoldersPass.php, line 62

Class

ResolveParameterPlaceHoldersPass
Resolves all parameter placeholders "%somevalue%" to their real values.

Namespace

Symfony\Component\DependencyInjection\Compiler

Code

protected function processValue(mixed $value, bool $isRoot = false) : mixed {
    if (\is_string($value)) {
        try {
            $v = $this->bag
                ->resolveValue($value);
        } catch (ParameterNotFoundException $e) {
            if ($this->throwOnResolveException) {
                throw $e;
            }
            $v = null;
            $this->container
                ->getDefinition($this->currentId)
                ->addError($e->getMessage());
        }
        return $this->resolveArrays || !$v || !\is_array($v) ? $v : $value;
    }
    if ($value instanceof Definition) {
        $value->setBindings($this->processValue($value->getBindings()));
        $changes = $value->getChanges();
        if (isset($changes['class'])) {
            $value->setClass($this->bag
                ->resolveValue($value->getClass()));
        }
        if (isset($changes['file'])) {
            $value->setFile($this->bag
                ->resolveValue($value->getFile()));
        }
        $tags = $value->getTags();
        if (isset($tags['proxy'])) {
            $tags['proxy'] = $this->bag
                ->resolveValue($tags['proxy']);
            $value->setTags($tags);
        }
    }
    $value = parent::processValue($value, $isRoot);
    if ($value && \is_array($value)) {
        $value = array_combine($this->bag
            ->resolveValue(array_keys($value)), $value);
    }
    return $value;
}
RSS feed
Powered by Drupal