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\CompilerCode
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 = [];
}
}