merge tags instead of completely replacing them

This commit is contained in:
Christian Flothmann 2016-10-23 08:49:28 +02:00
parent 122ac67823
commit c333eb70b6
2 changed files with 4 additions and 3 deletions

View File

@ -43,7 +43,7 @@ class DecoratorServicePass implements CompilerPassInterface
$container->setAlias($renamedId, new Alias((string) $alias, false)); $container->setAlias($renamedId, new Alias((string) $alias, false));
} else { } else {
$decoratedDefinition = $container->getDefinition($inner); $decoratedDefinition = $container->getDefinition($inner);
$definition->setTags($decoratedDefinition->getTags(), $definition->getTags()); $definition->setTags(array_merge($decoratedDefinition->getTags(), $definition->getTags()));
$public = $decoratedDefinition->isPublic(); $public = $decoratedDefinition->isPublic();
$decoratedDefinition->setPublic(false); $decoratedDefinition->setPublic(false);
$decoratedDefinition->setTags(array()); $decoratedDefinition->setTags(array());

View File

@ -87,17 +87,18 @@ class DecoratorServicePassTest extends \PHPUnit_Framework_TestCase
$container = new ContainerBuilder(); $container = new ContainerBuilder();
$container $container
->register('foo') ->register('foo')
->setTags(array('name' => 'bar')) ->setTags(array('bar' => array('attr' => 'baz')))
; ;
$container $container
->register('baz') ->register('baz')
->setTags(array('foobar' => array('attr' => 'bar')))
->setDecoratedService('foo') ->setDecoratedService('foo')
; ;
$this->process($container); $this->process($container);
$this->assertEmpty($container->getDefinition('baz.inner')->getTags()); $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) protected function process(ContainerBuilder $container)