Description
Symfony version(s) affected
6.2 at least
Description
If we use both attribute, it does not work: the service is not tagged.
Trace
ReflectionException:
Trying to invoke abstract method App\Jerome\JeromeInterface::getNameStoredInDb()
at /home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/symfony/dependency-injection/Compiler/PriorityTaggedServiceTrait.php:151
at ReflectionMethod->invoke()
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/symfony/dependency-injection/Compiler/PriorityTaggedServiceTrait.php:151)
at Symfony\Component\DependencyInjection\Compiler\PriorityTaggedServiceUtil::getDefault()
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/symfony/dependency-injection/Compiler/PriorityTaggedServiceTrait.php:83)
at Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass->findAndSortTaggedServices()
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/symfony/dependency-injection/Compiler/ServiceLocatorTagPass.php:37)
at Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass->processValue()
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/symfony/dependency-injection/Compiler/AbstractRecursivePass.php:82)
at Symfony\Component\DependencyInjection\Compiler\AbstractRecursivePass->processValue()
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/symfony/dependency-injection/Compiler/ServiceLocatorTagPass.php:48)
at Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass->processValue()
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/symfony/dependency-injection/Compiler/AbstractRecursivePass.php:91)
at Symfony\Component\DependencyInjection\Compiler\AbstractRecursivePass->processValue()
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/symfony/dependency-injection/Compiler/ServiceLocatorTagPass.php:48)
at Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass->processValue()
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/symfony/dependency-injection/Compiler/AbstractRecursivePass.php:82)
at Symfony\Component\DependencyInjection\Compiler\AbstractRecursivePass->processValue()
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/symfony/dependency-injection/Compiler/ServiceLocatorTagPass.php:48)
at Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass->processValue()
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/symfony/dependency-injection/Compiler/AbstractRecursivePass.php:47)
at Symfony\Component\DependencyInjection\Compiler\AbstractRecursivePass->process()
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/symfony/dependency-injection/Compiler/Compiler.php:82)
at Symfony\Component\DependencyInjection\Compiler\Compiler->compile()
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/symfony/dependency-injection/ContainerBuilder.php:757)
at Symfony\Component\DependencyInjection\ContainerBuilder->compile()
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/symfony/http-kernel/Kernel.php:546)
at Symfony\Component\HttpKernel\Kernel->initializeContainer()
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/symfony/http-kernel/Kernel.php:789)
at Symfony\Component\HttpKernel\Kernel->preBoot()
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/symfony/http-kernel/Kernel.php:190)
at Symfony\Component\HttpKernel\Kernel->handle()
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35)
at Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/autoload_runtime.php:35)
at require_once('/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/vendor/autoload_runtime.php')
(/home/gregoire/dev/labs/symfony/repro-dic-locator-factory/public/index.php:5)
How to reproduce
#[AsDecorator(HelloInterface::class)]
#[AutoconfigureTag('FOOBAR')]
class Decorator implements HelloInterface
{
public function __construct(
private readonly HelloInterface $hello,
) {
}
public function hello(): string
{
return '🎉🎉🎉 ' . $this->hello->hello() . ' 🎉🎉🎉';
}
}
https://github.com/lyrixx/test/tree/sf-repro-tag-decorator
Possible Solution
No response
Additional Context
No response