Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 04cb480

Browse files
committed
Merge branch '2.0' into 2.1
* 2.0: fixed a circular call (closes #6864)
2 parents 0c3d0db + 1eab515 commit 04cb480

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -955,23 +955,25 @@ private function getDefinitionsFromArguments(array $arguments)
955955
*
956956
* @return Boolean
957957
*/
958-
private function hasReference($id, array $arguments, $deep = false)
958+
private function hasReference($id, array $arguments, $deep = false, $visited = array())
959959
{
960960
foreach ($arguments as $argument) {
961961
if (is_array($argument)) {
962-
if ($this->hasReference($id, $argument, $deep)) {
962+
if ($this->hasReference($id, $argument, $deep, $visited)) {
963963
return true;
964964
}
965965
} elseif ($argument instanceof Reference) {
966966
if ($id === (string) $argument) {
967967
return true;
968968
}
969969

970-
if ($deep) {
970+
if ($deep && !isset($visited[(string) $argument])) {
971+
$visited[(string) $argument] = true;
972+
971973
$service = $this->container->getDefinition((string) $argument);
972974
$arguments = array_merge($service->getMethodCalls(), $service->getArguments(), $service->getProperties());
973975

974-
if ($this->hasReference($id, $arguments, $deep)) {
976+
if ($this->hasReference($id, $arguments, $deep, $visited)) {
975977
return true;
976978
}
977979
}

0 commit comments

Comments
 (0)