richcongress/fixture-test

View on GitHub
src/Bridge/Symfony/DependencyInjection/RichCongressFixtureTestExtension.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

declare(strict_types=1);

namespace RichCongress\FixtureTestBundle\Bridge\Symfony\DependencyInjection;

use RichCongress\BundleToolbox\Configuration\AbstractExtension;
use RichCongress\FixtureTestBundle\Bridge\Symfony\DependencyInjection\CompilerPass\ClassConfigurationGuessersCompilerPass;
use RichCongress\FixtureTestBundle\Bridge\Symfony\DependencyInjection\CompilerPass\PropertyConfigurationGuessersCompilerPass;
use RichCongress\FixtureTestBundle\ConfigurationGuesser\ClassGuesser\ClassConfigurationGuesserInterface;
use RichCongress\FixtureTestBundle\ConfigurationGuesser\ClassGuesser\DefaultClassConfigurationGuesser;
use RichCongress\FixtureTestBundle\ConfigurationGuesser\PropertyGuesser\PropertyConfigurationGuesserInterface;
use RichCongress\FixtureTestBundle\ConfigurationGuesser\Registry\ConfigurationGuesserRegistryInterface;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
use Symfony\Component\DependencyInjection\Reference;

final class RichCongressFixtureTestExtension extends AbstractExtension
{
    public function load(array $configs, ContainerBuilder $container): void
    {
        $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources'));
        $loader->load('services.xml');

        $container->registerForAutoconfiguration(ClassConfigurationGuesserInterface::class)
            ->addTag(ClassConfigurationGuessersCompilerPass::TAG);

        $container->registerForAutoconfiguration(PropertyConfigurationGuesserInterface::class)
            ->addTag(PropertyConfigurationGuessersCompilerPass::TAG);

        $registry = new Reference(ConfigurationGuesserRegistryInterface::class);
        $container->findDefinition(DefaultClassConfigurationGuesser::class)
            ->addMethodCall('setConfigurationGuesserRegistry', [$registry]);
    }
}