AbstractBuilderCollection::getBuilder()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 1
1
<?php
2
3
/*
4
 * doctrine-manager-builder (https://github.com/juliangut/doctrine-manager-builder).
5
 * Doctrine2 managers builder.
6
 *
7
 * @license BSD-3-Clause
8
 * @link https://github.com/juliangut/doctrine-manager-builder
9
 * @author Julián Gutiérrez <[email protected]>
10
 */
11
12
namespace Jgut\Doctrine\ManagerBuilder;
13
14
/**
15
 * Builder collection.
16
 */
17
abstract class AbstractBuilderCollection
18
{
19
    /**
20
     * Builders.
21
     *
22
     * @var ManagerBuilder[]
23
     */
24
    protected $builders = [];
25
26
    /**
27
     * Get registered builders.
28
     *
29
     * @return ManagerBuilder[]
30
     */
31
    public function getBuilders()
32
    {
33
        return array_values($this->builders);
34
    }
35
36
    /**
37
     * Get registered builder by name.
38
     *
39
     * @param string $builderName
40
     *
41
     * @return ManagerBuilder|null
42
     */
43
    public function getBuilder($builderName)
44
    {
45
        if (array_key_exists($builderName, $this->builders)) {
46
            return $this->builders[$builderName];
47
        }
48
49
        return;
50
    }
51
52
    /**
53
     * Add builders.
54
     *
55
     * @param ManagerBuilder[] $builders
56
     *
57
     * @throws \RuntimeException
58
     */
59
    public function addBuilders(array $builders)
60
    {
61
        foreach ($builders as $builder) {
62
            $this->addBuilder($builder);
63
        }
64
    }
65
66
    /**
67
     * Add builder.
68
     *
69
     * @param ManagerBuilder $builder
70
     *
71
     * @throws \RuntimeException
72
     */
73
    public function addBuilder(ManagerBuilder $builder)
74
    {
75
        $builderName = (string) $builder->getName();
76
        if ($builderName === '') {
77
            throw new \RuntimeException('Only named manager builders allowed');
78
        }
79
80
        if (array_key_exists($builderName, $this->builders)) {
81
            throw new \RuntimeException(sprintf('"%s" manager builder is already registered', $builderName));
82
        }
83
84
        $this->builders[$builderName] = $builder;
85
    }
86
87
    /**
88
     * Remove registered builder.
89
     *
90
     * @param ManagerBuilder $builder
91
     *
92
     * @throws \RuntimeException
93
     */
94
    public function removeBuilder(ManagerBuilder $builder)
95
    {
96
        $builderName = (string) $builder->getName();
97
        if ($builderName === '') {
98
            throw new \RuntimeException('Only named manager builders allowed');
99
        }
100
101
        if (array_key_exists($builderName, $this->builders)) {
102
            unset($this->builders[$builderName]);
103
        }
104
    }
105
}
106