ChainGeneratorFactoryPass   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 19
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 9
c 1
b 0
f 0
dl 0
loc 19
rs 10
wmc 5

1 Method

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