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

Breadcrumb

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

function ResolveBindingsPass::process

Overrides AbstractRecursivePass::process

File

vendor/symfony/dependency-injection/Compiler/ResolveBindingsPass.php, line 39

Class

ResolveBindingsPass
@author Guilhem Niot <guilhem.niot@gmail.com>

Namespace

Symfony\Component\DependencyInjection\Compiler

Code

public function process(ContainerBuilder $container) : void {
    $this->usedBindings = $container->getRemovedBindingIds();
    try {
        parent::process($container);
        foreach ($this->unusedBindings as [
            $key,
            $serviceId,
            $bindingType,
            $file,
        ]) {
            $argumentType = $argumentName = $message = null;
            if (str_contains($key, ' ')) {
                [
                    $argumentType,
                    $argumentName,
                ] = explode(' ', $key, 2);
            }
            elseif ('$' === $key[0]) {
                $argumentName = $key;
            }
            else {
                $argumentType = $key;
            }
            if ($argumentType) {
                $message .= \sprintf('of type "%s" ', $argumentType);
            }
            if ($argumentName) {
                $message .= \sprintf('named "%s" ', $argumentName);
            }
            if (BoundArgument::DEFAULTS_BINDING === $bindingType) {
                $message .= 'under "_defaults"';
            }
            elseif (BoundArgument::INSTANCEOF_BINDING === $bindingType) {
                $message .= 'under "_instanceof"';
            }
            else {
                $message .= \sprintf('for service "%s"', $serviceId);
            }
            if ($file) {
                $message .= \sprintf(' in file "%s"', $file);
            }
            $message = \sprintf('A binding is configured for an argument %s, but no corresponding argument has been found. It may be unused and should be removed, or it may have a typo.', $message);
            if ($this->errorMessages) {
                $message .= \sprintf("\nCould be related to%s:", 1 < \count($this->errorMessages) ? ' one of' : '');
            }
            foreach ($this->errorMessages as $m) {
                $message .= "\n - " . $m;
            }
            throw new InvalidArgumentException($message);
        }
    } finally {
        $this->usedBindings = [];
        $this->unusedBindings = [];
        $this->errorMessages = [];
    }
}
RSS feed
Powered by Drupal