8000 [DependencyInjection] Skip parameter attribute configurators in Attri… · symfony/symfony@5927651 · GitHub
[go: up one dir, main page]

Skip to content

Commit 5927651

Browse files
committed
[DependencyInjection] Skip parameter attribute configurators in AttributeAutoconfigurationPass if we can't get the constructor reflector
1 parent 4a07e06 commit 5927651

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

src/Symfony/Component/DependencyInjection/Compiler/AttributeAutoconfigurationPass.php

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Symfony\Component\DependencyInjection\ContainerBuilder;
1616
use Symfony\Component\DependencyInjection\Definition;
1717
use Symfony\Component\DependencyInjection\Exception\LogicException;
18+
use Symfony\Component\DependencyInjection\Exception\RuntimeException;
1819

1920
/**
2021
* @author Alexander M. Turek <me@derrabus.de>
@@ -99,11 +100,19 @@ protected function processValue($value, bool $isRoot = false)
99100
}
100101
}
101102

102-
if ($this->parameterAttributeConfigurators && $constructorReflector = $this->getConstructor($value, false)) {
103-
foreach ($constructorReflector->getParameters() as $parameterReflector) {
104-
foreach ($parameterReflector->getAttributes() as $attribute) {
105-
if ($configurator = $this->parameterAttributeConfigurators[$attribute->getName()] ?? null) {
106-
$configurator($conditionals, $attribute->newInstance(), $parameterReflector);
103+
if ($this->parameterAttributeConfigurators) {
104+
try {
105+
$constructorReflector = $this->getConstructor($value, false);
106+
} catch (RuntimeException $e) {
107+
$constructorReflector = null;
108+
}
109+
110+
if ($constructorReflector) {
111+
foreach ($constructorReflector->getParameters() as $parameterReflector) {
112+
foreach ($parameterReflector->getAttributes() as $attribute) {
113+
if ($configurator = $this->parameterAttributeConfigurators[$attribute->getName()] ?? null) {
114+
$configurator($conditionals, $attribute->newInstance(), $parameterReflector);
115+
}
107116
}
108117
}
109118
}

0 commit comments

Comments
 (0)
0