X-Git-Url: https://yaffs.net/gitweb/?a=blobdiff_plain;f=vendor%2Fsymfony%2Fdependency-injection%2FCompiler%2FDecoratorServicePass.php;h=263bd4cf1fba54f25bf6513923c385f9b390cc0b;hb=1c1cb0980bfa6caf0c24cce671b6bb541dc87583;hp=1976d0ac563408b0ca0b7a361f3587a0f0223620;hpb=af6d1fb995500ae68849458ee10d66abbdcfb252;p=yaffs-website diff --git a/vendor/symfony/dependency-injection/Compiler/DecoratorServicePass.php b/vendor/symfony/dependency-injection/Compiler/DecoratorServicePass.php index 1976d0ac5..263bd4cf1 100644 --- a/vendor/symfony/dependency-injection/Compiler/DecoratorServicePass.php +++ b/vendor/symfony/dependency-injection/Compiler/DecoratorServicePass.php @@ -11,8 +11,8 @@ namespace Symfony\Component\DependencyInjection\Compiler; -use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Alias; +use Symfony\Component\DependencyInjection\ContainerBuilder; /** * Overwrites a service but keeps the overridden one. @@ -34,6 +34,7 @@ class DecoratorServicePass implements CompilerPassInterface } $definitions->insert(array($id, $definition), array($decorated[2], --$order)); } + $decoratingDefinitions = array(); foreach ($definitions as list($id, $definition)) { list($inner, $renamedId) = $definition->getDecoratedService(); @@ -53,18 +54,25 @@ class DecoratorServicePass implements CompilerPassInterface $container->setAlias($renamedId, new Alias($container->normalizeId($alias), false)); } else { $decoratedDefinition = $container->getDefinition($inner); - $definition->setTags(array_merge($decoratedDefinition->getTags(), $definition->getTags())); - if ($types = array_merge($decoratedDefinition->getAutowiringTypes(false), $definition->getAutowiringTypes(false))) { - $definition->setAutowiringTypes($types); - } $public = $decoratedDefinition->isPublic(); $private = $decoratedDefinition->isPrivate(); $decoratedDefinition->setPublic(false); - $decoratedDefinition->setTags(array()); - if ($decoratedDefinition->getAutowiringTypes(false)) { - $decoratedDefinition->setAutowiringTypes(array()); - } $container->setDefinition($renamedId, $decoratedDefinition); + $decoratingDefinitions[$inner] = $decoratedDefinition; + } + + if (isset($decoratingDefinitions[$inner])) { + $decoratingDefinition = $decoratingDefinitions[$inner]; + $definition->setTags(array_merge($decoratingDefinition->getTags(), $definition->getTags())); + $autowiringTypes = $decoratingDefinition->getAutowiringTypes(false); + if ($types = array_merge($autowiringTypes, $definition->getAutowiringTypes(false))) { + $definition->setAutowiringTypes($types); + } + $decoratingDefinition->setTags(array()); + if ($autowiringTypes) { + $decoratingDefinition->setAutowiringTypes(array()); + } + $decoratingDefinitions[$inner] = $definition; } $container->setAlias($inner, $id)->setPublic($public)->setPrivate($private);