ChainGeneratorFactoryPass::process()   A
last analyzed

Complexity

Conditions 5
Paths 4

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 5
eloc 8
c 1
b 0
f 0
nc 4
nop 1
dl 0
loc 14
rs 9.6111
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
        if (!$container->has(ChainGeneratorFactory::class)) {
21
            return;
22
        }
23
24
        $chainGeneratorFactoryDefinition = $container->findDefinition(ChainGeneratorFactory::class);
25
        $generatorFactories = $container->findTaggedServiceIds('database_anonymizer.generator_factory');
26
27
        foreach ($generatorFactories as $id => $tags) {
28
            $factoryClass = $container->getDefinition($id)->getClass();
29
30
            if (ChainGeneratorFactory::class !== !$factoryClass && !\is_subclass_of($factoryClass, ChainGeneratorFactory::class)) {
31
                $chainGeneratorFactoryDefinition->addMethodCall('addFactory', [new Reference($id)]);
32
            }
33
        }
34
    }
35
}
36