Chris@14: Chris@14: * Chris@14: * For the full copyright and license information, please view the LICENSE Chris@14: * file that was distributed with this source code. Chris@14: */ Chris@14: Chris@14: namespace Symfony\Component\HttpKernel\DependencyInjection; Chris@14: Chris@14: use Symfony\Component\DependencyInjection\Argument\IteratorArgument; Chris@14: use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; Chris@14: use Symfony\Component\DependencyInjection\Compiler\PriorityTaggedServiceTrait; Chris@14: use Symfony\Component\DependencyInjection\ContainerBuilder; Chris@14: Chris@14: /** Chris@14: * Gathers and configures the argument value resolvers. Chris@14: * Chris@14: * @author Iltar van der Berg Chris@14: */ Chris@14: class ControllerArgumentValueResolverPass implements CompilerPassInterface Chris@14: { Chris@14: use PriorityTaggedServiceTrait; Chris@14: Chris@14: private $argumentResolverService; Chris@14: private $argumentValueResolverTag; Chris@14: Chris@14: public function __construct($argumentResolverService = 'argument_resolver', $argumentValueResolverTag = 'controller.argument_value_resolver') Chris@14: { Chris@14: $this->argumentResolverService = $argumentResolverService; Chris@14: $this->argumentValueResolverTag = $argumentValueResolverTag; Chris@14: } Chris@14: Chris@14: public function process(ContainerBuilder $container) Chris@14: { Chris@14: if (!$container->hasDefinition($this->argumentResolverService)) { Chris@14: return; Chris@14: } Chris@14: Chris@14: $container Chris@14: ->getDefinition($this->argumentResolverService) Chris@14: ->replaceArgument(1, new IteratorArgument($this->findAndSortTaggedServices($this->argumentValueResolverTag, $container))) Chris@14: ; Chris@14: } Chris@14: }