|
@@ -2,6 +2,8 @@
|
|
|
|
|
|
namespace Symfony\Component\DependencyInjection\Compiler;
|
|
|
|
|
|
+use Symfony\Component\DependencyInjection\Definition;
|
|
|
+
|
|
|
use Symfony\Component\DependencyInjection\Exception\NonExistentServiceException;
|
|
|
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
|
use Symfony\Component\DependencyInjection\Reference;
|
|
@@ -23,17 +25,24 @@ class CheckExceptionOnInvalidReferenceBehaviorPass implements CompilerPassInterf
|
|
|
|
|
|
foreach ($container->getDefinitions() as $id => $definition) {
|
|
|
$this->sourceId = $id;
|
|
|
- $this->processReferences($definition->getArguments());
|
|
|
- $this->processReferences($definition->getMethodCalls());
|
|
|
- $this->processReferences($definition->getProperties());
|
|
|
+ $this->processDefinition($definition);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private function processDefinition(Definition $definition)
|
|
|
+ {
|
|
|
+ $this->processReferences($definition->getArguments());
|
|
|
+ $this->processReferences($definition->getMethodCalls());
|
|
|
+ $this->processReferences($definition->getProperties());
|
|
|
+ }
|
|
|
+
|
|
|
private function processReferences(array $arguments)
|
|
|
{
|
|
|
foreach ($arguments as $argument) {
|
|
|
if (is_array($argument)) {
|
|
|
$this->processReferences($argument);
|
|
|
+ } else if ($argument instanceof Definition) {
|
|
|
+ $this->processDefinition($argument);
|
|
|
} else if ($argument instanceof Reference && ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE === $argument->getInvalidBehavior()) {
|
|
|
$destId = (string) $argument;
|
|
|
|