Configuration::appendRepositories()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 32

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 32
rs 9.408
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Lendable\DoctrineExtensionsBundle\DependencyInjection;
6
7
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
8
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
9
use Symfony\Component\Config\Definition\ConfigurationInterface;
10
11
class Configuration implements ConfigurationInterface
12
{
13
    public function getConfigTreeBuilder()
14
    {
15
        $treeBuilder = new TreeBuilder();
16
        $root = $treeBuilder->root('lendable_doctrine_extensions');
17
18
        $this->appendRepositories($root);
19
20
        return $treeBuilder;
21
    }
22
23
    private function appendRepositories(ArrayNodeDefinition $root): ArrayNodeDefinition
24
    {
25
        $repositories = $root->children()
26
            ->arrayNode('repositories')
27
            ->prototype('array');
28
29
        assert($repositories instanceof ArrayNodeDefinition);
30
31
        $repositories->children()
32
            ->arrayNode('args')
33
            ->isRequired()
34
            ->prototype('variable');
35
36
        $repositories->children()
37
            ->arrayNode('managers')
38
            ->requiresAtLeastOneElement()
39
            ->prototype('scalar')
40
            ->defaultValue(['default']);
41
42
        $repositories->children()
43
            ->scalarNode('entity')
44
            ->isRequired()
45
            ->validate()
46
            ->ifTrue(
47
                function ($v) {
48
                    return !class_exists($v);
49
                }
50
            )
51
            ->thenInvalid('Entity class does not exist');
52
53
        return $root;
54
    }
55
}
56