fixed a circular call (closes #6864)
This commit is contained in:
parent
115114b0dc
commit
74f2fcfed0
@ -952,11 +952,11 @@ EOF;
|
||||
*
|
||||
* @return Boolean
|
||||
*/
|
||||
private function hasReference($id, array $arguments, $deep = false)
|
||||
private function hasReference($id, array $arguments, $deep = false, $visited = array())
|
||||
{
|
||||
foreach ($arguments as $argument) {
|
||||
if (is_array($argument)) {
|
||||
if ($this->hasReference($id, $argument, $deep)) {
|
||||
if ($this->hasReference($id, $argument, $deep, $visited)) {
|
||||
return true;
|
||||
}
|
||||
} elseif ($argument instanceof Reference) {
|
||||
@ -964,11 +964,13 @@ EOF;
|
||||
return true;
|
||||
}
|
||||
|
||||
if ($deep) {
|
||||
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)) {
|
||||
if ($this->hasReference($id, $arguments, $deep, $visited)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user