Server IP : 15.235.198.142 / Your IP : 216.73.216.181 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ballsack 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 30 12:02:04 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /usr/share/php/Symfony/Component/DependencyInjection/Compiler/ |
Upload File : |
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\DependencyInjection\Compiler; use Symfony\Component\DependencyInjection\Attribute\AsDecorator; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; /** * Reads #[AsDecorator] attributes on definitions that are autowired * and don't have the "container.ignore_attributes" tag. */ final class AutowireAsDecoratorPass implements CompilerPassInterface { public function process(ContainerBuilder $container): void { foreach ($container->getDefinitions() as $definition) { if ($this->accept($definition) && $reflectionClass = $container->getReflectionClass($definition->getClass(), false)) { $this->processClass($definition, $reflectionClass); } } } private function accept(Definition $definition): bool { return !$definition->hasTag('container.ignore_attributes') && $definition->isAutowired(); } private function processClass(Definition $definition, \ReflectionClass $reflectionClass): void { foreach ($reflectionClass->getAttributes(AsDecorator::class, \ReflectionAttribute::IS_INSTANCEOF) as $attribute) { $attribute = $attribute->newInstance(); $definition->setDecoratedService($attribute->decorates, null, $attribute->priority, $attribute->onInvalid); } } }