From c333eb70b67e1531de0131e3a14ea3c71eb92442 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Sun, 23 Oct 2016 08:49:28 +0200 Subject: [PATCH] merge tags instead of completely replacing them --- .../DependencyInjection/Compiler/DecoratorServicePass.php | 2 +- .../Tests/Compiler/DecoratorServicePassTest.php | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php b/src/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php index c7a4ac89c1..f0ac7ff945 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php @@ -43,7 +43,7 @@ class DecoratorServicePass implements CompilerPassInterface $container->setAlias($renamedId, new Alias((string) $alias, false)); } else { $decoratedDefinition = $container->getDefinition($inner); - $definition->setTags($decoratedDefinition->getTags(), $definition->getTags()); + $definition->setTags(array_merge($decoratedDefinition->getTags(), $definition->getTags())); $public = $decoratedDefinition->isPublic(); $decoratedDefinition->setPublic(false); $decoratedDefinition->setTags(array()); diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/DecoratorServicePassTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/DecoratorServicePassTest.php index b197e42249..10781e255e 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/DecoratorServicePassTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/DecoratorServicePassTest.php @@ -87,17 +87,18 @@ class DecoratorServicePassTest extends \PHPUnit_Framework_TestCase $container = new ContainerBuilder(); $container ->register('foo') - ->setTags(array('name' => 'bar')) + ->setTags(array('bar' => array('attr' => 'baz'))) ; $container ->register('baz') + ->setTags(array('foobar' => array('attr' => 'bar'))) ->setDecoratedService('foo') ; $this->process($container); $this->assertEmpty($container->getDefinition('baz.inner')->getTags()); - $this->assertEquals(array('name' => 'bar'), $container->getDefinition('baz')->getTags()); + $this->assertEquals(array('bar' => array('attr' => 'baz'), 'foobar' => array('attr' => 'bar')), $container->getDefinition('baz')->getTags()); } protected function process(ContainerBuilder $container)