piotrpolak/conditional-routing-bundle

View on GitHub
src/DependencyInjection/Compiler/RouteResolverCompilerPass.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace PiotrPolak\ConditionalRoutingBundle\DependencyInjection\Compiler;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\Reference;

/**
 * Adds tagged conditional_loader.route_resolver service support.
 *
 * @author Piotr Polak <piotr@polak.ro>
 */
class RouteResolverCompilerPass implements CompilerPassInterface
{
    /**
     * {@inheritdoc}
     */
    public function process(ContainerBuilder $container)
    {
        if (!$container->has('conditional_router.routing_loader')) {
            return;
        }

        $definition = $container->findDefinition('conditional_router.routing_loader');

        $taggedServicesIds = array_keys($container->findTaggedServiceIds('conditional_loader.route_resolver'));

        foreach ($taggedServicesIds as $id) {
            $definition->addMethodCall('addRouteResolver', array(new Reference($id)));
        }
    }
}