Checks if a service id has a reference.
string $id:
array $arguments:
Boolean $deep:
array $visited:
Boolean
private function hasReference($id, array $arguments, $deep = false, $visited = array()) {
foreach ($arguments as $argument) {
if (is_array($argument)) {
if ($this
->hasReference($id, $argument, $deep, $visited)) {
return true;
}
}
elseif ($argument instanceof Reference) {
if ($id === (string) $argument) {
return true;
}
if ($deep && !isset($visited[(string) $argument])) {
$visited[(string) $argument] = true;
$service = $this->container
->getDefinition((string) $argument);
$arguments = array_merge($service
->getMethodCalls(), $service
->getArguments(), $service
->getProperties());
if ($this
->hasReference($id, $arguments, $deep, $visited)) {
return true;
}
}
}
}
return false;
}