Skip to content
This repository was archived by the owner on Feb 6, 2020. It is now read-only.

Commit ca07a2d

Browse files
committed
#83 - cyclic aliases will cause exceptions to be thrown
1 parent 3d8bd24 commit ca07a2d

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/ServiceManager.php

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use ProxyManager\GeneratorStrategy\EvaluatingGeneratorStrategy;
1818
use Zend\ServiceManager\Exception\ContainerModificationsNotAllowedException;
1919
use Zend\ServiceManager\Exception\InvalidArgumentException;
20+
use Zend\ServiceManager\Exception\InvalidServiceException;
2021
use Zend\ServiceManager\Exception\ServiceNotCreatedException;
2122
use Zend\ServiceManager\Factory\AbstractFactoryInterface;
2223
use Zend\ServiceManager\Factory\DelegatorFactoryInterface;
@@ -569,15 +570,16 @@ private function resolveInitializers(array $initializers)
569570
private function resolveAliases(array $aliases)
570571
{
571572
foreach ($aliases as $alias => $service) {
572-
// avoiding infinite loops by removing already resolved aliases
573-
$currentAliases = $this->aliases;
574-
$name = $alias;
573+
$visited = [];
574+
$name = $alias;
575575

576-
while (isset($currentAliases[$name])) {
577-
$oldName = $name;
578-
$name = $currentAliases[$name];
576+
while (isset($this->aliases[$name])) {
577+
if (isset($visited[$name])) {
578+
throw new InvalidServiceException('YADDA');
579+
}
579580

580-
unset($currentAliases[$oldName]);
581+
$visited[$name] = true;
582+
$name = $this->aliases[$name];
581583
}
582584

583585
$this->resolvedAliases[$alias] = $name;

0 commit comments

Comments
 (0)