* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\HttpKernel\DependencyInjection; use Symfony\Component\DependencyInjection\Argument\IteratorArgument; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Reference; /** * Register all services that have the "kernel.locale_aware" tag into the listener. * * @author Pierre Bobiet */ class RegisterLocaleAwareServicesPass implements CompilerPassInterface { private $listenerServiceId; private $localeAwareTag; public function __construct(string $listenerServiceId = 'locale_aware_listener', string $localeAwareTag = 'kernel.locale_aware') { $this->listenerServiceId = $listenerServiceId; $this->localeAwareTag = $localeAwareTag; } public function process(ContainerBuilder $container) { if (!$container->hasDefinition($this->listenerServiceId)) { return; } $services = []; foreach ($container->findTaggedServiceIds($this->localeAwareTag) as $id => $tags) { $services[] = new Reference($id); } if (!$services) { $container->removeDefinition($this->listenerServiceId); return; } $container ->getDefinition($this->listenerServiceId) ->setArgument(0, new IteratorArgument($services)) ; } }