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

ChainGeneratorFactoryPass   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 15
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 15
rs 10
c 0
b 0
f 0
wmc 4

1 Method

Rating   Name   Duplication   Size   Complexity  
A process() 0 10 4
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