- }
-
- 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);
- } elseif ($argument instanceof Definition) {
- $this->processDefinition($argument);
- } elseif ($argument instanceof Reference && ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE === $argument->getInvalidBehavior()) {
- $destId = (string) $argument;
-
- if (!$this->container->has($destId)) {
- throw new ServiceNotFoundException($destId, $this->sourceId);
- }
- }
+ if (ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE === $value->getInvalidBehavior() && !$this->container->has($id = (string) $value)) {
+ throw new ServiceNotFoundException($id, $this->currentId);