Skip to content

Commit abfbc4e

Browse files
committed
DecoratorExtension: implemented decorating by factory interface
1 parent 6b24a1a commit abfbc4e

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

src/DI/Extensions/DecoratorExtension.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ private function findByType($type)
5959
{
6060
$type = ltrim($type, '\\');
6161
return array_filter($this->getContainerBuilder()->getDefinitions(), function ($def) use ($type) {
62-
return $def->getClass() === $type || is_subclass_of($def->getClass(), $type);
62+
return $def->getClass() === $type || is_subclass_of($def->getClass(), $type)
63+
|| $def->getImplement() === $type || is_subclass_of($def->getImplement(), $type);
6364
});
6465
}
6566

tests/DI/DecoratorExtension.factories.phpt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ $container = createContainer($compiler, '
3131
decorator:
3232
Foo:
3333
inject: yes
34+
FooFactory:
35+
tags: [a]
3436
services:
3537
foo: {implement: FooFactory}
3638
');
@@ -39,3 +41,5 @@ services:
3941
$builder = $compiler->getContainerBuilder();
4042

4143
Assert::true($builder->getDefinition('foo')->getTag('inject'));
44+
45+
Assert::true($builder->getDefinition('foo')->getTag('a'));

0 commit comments

Comments
 (0)