Passed
Push — master ( 265c0b...e337ae )
by Webnet
01:48
created

ChainGeneratorFactoryPass::process()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 6
nc 3
nop 1
dl 0
loc 10
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace WebnetFr\DatabaseAnonymizer\DependencyInjection\Compiler;
4
5
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
use Symfony\Component\DependencyInjection\Reference;
8
use WebnetFr\DatabaseAnonymizer\GeneratorFactory\ChainGeneratorFactory;
9
10
/**
11
 * @author Vlad Riabchenko <[email protected]>
12
 */
13
class ChainGeneratorFactoryPass implements CompilerPassInterface
14
{
15
    /**
16
     * {@inheritdoc}
17
     */
18
    public function process(ContainerBuilder $container)
19
    {
20
        $chainGeneratorFactoryDefinition = $container->getDefinition(ChainGeneratorFactory::class);
21
22
        $generatorFactories = $container->findTaggedServiceIds('database_anonymizer.generator_factory');
23
        foreach ($generatorFactories as $id => $tags) {
24
            $factoryClass = $container->getDefinition($id)->getClass();
25
26
            if (ChainGeneratorFactory::class !== !$factoryClass && !is_subclass_of($factoryClass, ChainGeneratorFactory::class)) {
27
                $chainGeneratorFactoryDefinition->addMethodCall('addFactory', [new Reference($id)]);
28
            }
29
        }
30
    }
31
}
32