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

Skip to content

Commit 7f3ce9a

Browse files
committed
bug #20278 [DependencyInjection] merge tags instead of completely replacing them (xabbuh)
This PR was merged into the 2.7 branch. Discussion ---------- [DependencyInjection] merge tags instead of completely replacing them | Q | A | ------------- | --- | Branch? | 2.7 | Bug fix? | yes | New feature? | yes/no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | #20150, #20207 | License | MIT | Doc PR | In #20207, I missed the `array_merge()` call. Thus, previously set tags of the decorating service would have been discarded by the compiler pass. Commits ------- c333eb7 merge tags instead of completely replacing them
2 parents 122ac67 + c333eb7 commit 7f3ce9a

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
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: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,17 +87,18 @@ public function testProcessMovesTagsFromDecoratedDefinitionToDecoratingDefinitio
8787
$container = new ContainerBuilder();
8888
$container
8989
->register('foo')
90-
->setTags(array('name' => 'bar'))
90+
->setTags(array('bar' => array('attr' => 'baz')))
9191
;
9292
$container
9393
->register('baz')
94+
->setTags(array('foobar' => array('attr' => 'bar')))
9495
->setDecoratedService('foo')
9596
;
9697

9798
$this->process($container);
9899

99100
$this->assertEmpty($container->getDefinition('baz.inner')->getTags());
100-
$this->assertEquals(array('name' => 'bar'), $container->getDefinition('baz')->getTags());
101+
$this->assertEquals(array('bar' => array('attr' => 'baz'), 'foobar' => array('attr' => 'bar')), $container->getDefinition('baz')->getTags());
101102
}
102103

103104
protected function process(ContainerBuilder $container)

0 commit comments

Comments
 (0)