File manager - Edit - /var/www/payraty/helpdesk/vendor/rector/rector/vendor/symfony/dependency-injection/Compiler/RegisterAutoconfigureAttributesPass.php
Back
<?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 RectorPrefix202208\Symfony\Component\DependencyInjection\Compiler; use RectorPrefix202208\Symfony\Component\DependencyInjection\Attribute\Autoconfigure; use RectorPrefix202208\Symfony\Component\DependencyInjection\ContainerBuilder; use RectorPrefix202208\Symfony\Component\DependencyInjection\Definition; use RectorPrefix202208\Symfony\Component\DependencyInjection\Loader\YamlFileLoader; /** * Reads #[Autoconfigure] attributes on definitions that are autoconfigured * and don't have the "container.ignore_attributes" tag. * * @author Nicolas Grekas <p@tchwork.com> */ final class RegisterAutoconfigureAttributesPass implements CompilerPassInterface { private static $registerForAutoconfiguration; /** * {@inheritdoc} */ public function process(ContainerBuilder $container) { foreach ($container->getDefinitions() as $id => $definition) { if ($this->accept($definition) && ($class = $container->getReflectionClass($definition->getClass(), \false))) { $this->processClass($container, $class); } } } public function accept(Definition $definition) : bool { return $definition->isAutoconfigured() && !$definition->hasTag('container.ignore_attributes'); } public function processClass(ContainerBuilder $container, \ReflectionClass $class) { foreach (\method_exists($class, 'getAttributes') ? $class->getAttributes(Autoconfigure::class, \ReflectionAttribute::IS_INSTANCEOF) : [] as $attribute) { self::registerForAutoconfiguration($container, $class, $attribute); } } private static function registerForAutoconfiguration(ContainerBuilder $container, \ReflectionClass $class, \ReflectionAttribute $attribute) { if (self::$registerForAutoconfiguration) { return (self::$registerForAutoconfiguration)($container, $class, $attribute); } $parseDefinitions = new \ReflectionMethod(YamlFileLoader::class, 'parseDefinitions'); $yamlLoader = $parseDefinitions->getDeclaringClass()->newInstanceWithoutConstructor(); self::$registerForAutoconfiguration = static function (ContainerBuilder $container, \ReflectionClass $class, \ReflectionAttribute $attribute) use($parseDefinitions, $yamlLoader) { $attribute = (array) $attribute->newInstance(); foreach ($attribute['tags'] ?? [] as $i => $tag) { if (\is_array($tag) && [0] === \array_keys($tag)) { $attribute['tags'][$i] = [$class->name => $tag[0]]; } } $parseDefinitions->invoke($yamlLoader, ['services' => ['_instanceof' => [$class->name => [$container->registerForAutoconfiguration($class->name)] + $attribute]]], $class->getFileName(), \false); }; return (self::$registerForAutoconfiguration)($container, $class, $attribute); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.30 | Generation time: 0 |
proxy
|
phpinfo
|
Settings