rich-id/terms-module

View on GitHub
src/Infrastructure/DependencyInjection/CompilerPass/TermsGuardCompilerPass.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

declare(strict_types=1);

namespace RichId\TermsModuleBundle\Infrastructure\DependencyInjection\CompilerPass;

use RichCongress\BundleToolbox\Configuration\AbstractCompilerPass;
use RichId\TermsModuleBundle\Domain\Guard\TermsGuardManager;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;

final class TermsGuardCompilerPass extends AbstractCompilerPass
{
    public const TAG = 'terms_module.guard';

    public function process(ContainerBuilder $container): void
    {
        $services = $container->findTaggedServiceIds(self::TAG);
        $serviceReferences = \array_map(
            static function (string $serviceId): Reference {
                return new Reference($serviceId);
            },
            \array_keys($services)
        );

        $definition = $container->findDefinition(TermsGuardManager::class);
        $definition->addMethodCall('setGuards', [$serviceReferences]);
    }
}