Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 7e1d19b

Browse files
committed
[DI] Fix tags merging in decorating service
1 parent 122ac67 commit 7e1d19b

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public function process(ContainerBuilder $container)
4343
$container->setAlias($renamedId, new Alias((string) $alias, false));
4444
} else {
4545
$decoratedDefinition = $container->getDefinition($inner);
46-
$definition->setTags($decoratedDefinition->getTags(), $definition->getTags());
46+
$definition->setTags(array_merge($decoratedDefinition->getTags(), $definition->getTags()));
4747
$public = $decoratedDefinition->isPublic();
4848
$decoratedDefinition->setPublic(false);
4949
$decoratedDefinition->setTags(array());

src/Symfony/Component/DependencyInjection/Tests/Compiler/DecoratorServicePassTest.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,25 @@ public function testProcessMovesTagsFromDecoratedDefinitionToDecoratingDefinitio
100100
$this->assertEquals(array('name' => 'bar'), $container->getDefinition('baz')->getTags());
101101
}
102102

103+
public function testProcessMergesTagsInDecoratingDefinition()
104+
{
105+
$container = new ContainerBuilder();
106+
$container
107+
->register('foo')
108+
->setTags(array('name' => 'bar'))
109+
;
110+
$container
111+
->register('baz')
112+
->setTags(array('name' => 'baz', 'alias' => 'bar'))
113+
->setDecoratedService('foo')
114+
;
115+
116+
$this->process($container);
117+
118+
$this->assertEmpty($container->getDefinition('baz.inner')->getTags());
119+
$this->assertEquals(array('name' => 'baz', 'alias' => 'bar'), $container->getDefinition('baz')->getTags());
120+
}
121+
103122
protected function process(ContainerBuilder $container)
104123
{
105124
$repeatedPass = new DecoratorServicePass();

0 commit comments

Comments
 (0)