Skip to content

Commit b409e17

Browse files
[DI] Fix circular-aliases message
1 parent 74ec16a commit b409e17

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

ContainerBuilder.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -998,10 +998,14 @@ public function findDefinition($id)
998998
$id = (string) $this->aliasDefinitions[$id];
999999

10001000
if (isset($seen[$id])) {
1001-
throw new ServiceCircularReferenceException($id, array_keys($seen));
1001+
$seen = array_values($seen);
1002+
$seen = array_slice($seen, array_search($id, $seen));
1003+
$seen[] = $id;
1004+
1005+
throw new ServiceCircularReferenceException($id, $seen);
10021006
}
10031007

1004-
$seen[$id] = true;
1008+
$seen[$id] = $id;
10051009
}
10061010

10071011
return $this->getDefinition($id);

Tests/ContainerBuilderTest.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,18 +1046,19 @@ public function testInlinedDefinitions()
10461046

10471047
/**
10481048
* @expectedException \Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException
1049-
* @expectedExceptionMessage Circular reference detected for service "app.test_class", path: "app.test_class -> App\TestClass".
1049+
* @expectedExceptionMessage Circular reference detected for service "app.test_class", path: "app.test_class -> App\TestClass -> app.test_class".
10501050
*/
10511051
public function testThrowsCircularExceptionForCircularAliases()
10521052
{
10531053
$builder = new ContainerBuilder();
10541054

10551055
$builder->setAliases(array(
1056+
'foo' => new Alias('app.test_class'),
10561057
'app.test_class' => new Alias('App\\TestClass'),
10571058
'App\\TestClass' => new Alias('app.test_class'),
10581059
));
10591060

1060-
$builder->findDefinition('App\\TestClass');
1061+
$builder->findDefinition('foo');
10611062
}
10621063

10631064
public function testInitializePropertiesBeforeMethodCalls()

0 commit comments

Comments
 (0)