DictionaryBuildingPass   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Test Coverage

Coverage 94.44%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 18
c 1
b 0
f 0
dl 0
loc 37
ccs 17
cts 18
cp 0.9444
rs 10
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A createDefinition() 0 16 1
A process() 0 12 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Knp\DictionaryBundle\DependencyInjection\Compiler;
6
7
use Knp\DictionaryBundle\Dictionary;
8
use Knp\DictionaryBundle\Dictionary\Factory\Aggregate;
9
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
10
use Symfony\Component\DependencyInjection\ContainerBuilder;
11
use Symfony\Component\DependencyInjection\Definition;
12
use Symfony\Component\DependencyInjection\Reference;
13
14
final class DictionaryBuildingPass implements CompilerPassInterface
15
{
16
    public function process(ContainerBuilder $containerBuilder): void
17 3
    {
18
        $configuration = $containerBuilder->getParameter('knp_dictionary.configuration');
19 3
20
        if (false === \is_array($configuration)) {
21 3
            throw new \Exception('The configuration "knp_dictionary.dictionaries" should be an array.');
22
        }
23
24
        foreach ($configuration['dictionaries'] as $name => $config) {
25 3
            $containerBuilder->setDefinition(
26 3
                \sprintf('knp_dictionary.dictionary.%s', $name),
27 3
                $this->createDefinition($name, $config)
28 3
            );
29
        }
30
    }
31 3
32
    /**
33
     * @param mixed[] $config
34
     */
35
    private function createDefinition(string $name, array $config): Definition
36 3
    {
37
        $definition = new Definition();
38 3
39
        $definition
40
            ->setClass(Dictionary::class)
41 3
            ->setFactory([
42 3
                new Reference(Aggregate::class),
43 3
                'create',
44 3
            ])
45
            ->addArgument($name)
46 3
            ->addArgument($config)
47 3
            ->addTag(DictionaryRegistrationPass::TAG_DICTIONARY)
48 3
        ;
49
50
        return $definition;
51 3
    }
52
}
53