hasDefinition(AuthorizeRegistry::class)) { return; } $registryDefinition = $container->findDefinition(AuthorizeRegistry::class); foreach ($container->findTaggedServiceIds($this->tagName) as $serviceName => $tags) { $definition = $container->findDefinition($serviceName); if ($definition->isAbstract()) { continue; } $className = $definition->getClass() ?? $serviceName; $reflectionClass = $container->getReflectionClass($className); if ($reflectionClass === null) { continue; } foreach ($reflectionClass->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) { if (!str_ends_with($method->getName(), 'Action')) { continue; } $attributes = $method->getAttributes(Authorize::class); if ($attributes === []) { continue; } foreach ($attributes as $attribute) { $authorize = $attribute->newInstance(); $registryDefinition->addMethodCall('add', [ $className, $method->getName(), $authorize->callback, $authorize->requireLogin, $authorize->requireGroups, ]); } } } } }