Chain::getPlugin()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 4
cts 4
cp 1
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 4
nc 2
nop 1
crap 2
1
<?php
2
/**
3
 * AnimeDb package.
4
 *
5
 * @author    Peter Gribanov <[email protected]>
6
 * @copyright Copyright (c) 2011, Peter Gribanov
7
 * @license   http://opensource.org/licenses/GPL-3.0 GPL v3
8
 */
9
10
namespace AnimeDb\Bundle\CatalogBundle\Plugin;
11
12
/**
13
 * Chain plugins.
14
 *
15
 * @author  Peter Gribanov <[email protected]>
16
 */
17
abstract class Chain
18
{
19
    /**
20
     * @var array
21
     */
22
    protected $plugins = [];
23
24
    /**
25
     * @var array
26
     */
27
    protected $titles = [];
28
29
    /**
30
     * @param PluginInterface $plugin
31
     */
32 8
    public function addPlugin(PluginInterface $plugin)
33
    {
34 8
        $this->plugins[$plugin->getName()] = $plugin;
35 8
        $this->titles[$plugin->getName()] = $plugin->getTitle();
36 8
        ksort($this->plugins);
37 8
        ksort($this->titles);
38 8
    }
39
40
    /**
41
     * @param string $name
42
     *
43
     * @return PluginInterface|null
44
     */
45 4
    public function getPlugin($name)
46
    {
47 4
        if (array_key_exists($name, $this->plugins)) {
48 2
            return $this->plugins[$name];
49
        }
50
51 3
        return;
52
    }
53
54
    /**
55
     * @return bool
56
     */
57 1
    public function hasPlugins()
58
    {
59 1
        return !empty($this->plugins);
60
    }
61
62
    /**
63
     * @return PluginInterface[]
64
     */
65 1
    public function getPlugins()
66
    {
67 1
        return $this->plugins;
68
    }
69
70
    /**
71
     * @return string[]
72
     */
73 1
    public function getNames()
74
    {
75 1
        return array_keys($this->plugins);
76
    }
77
78
    /**
79
     * @return string[]
80
     */
81 1
    public function getTitles()
82
    {
83 1
        return $this->titles;
84
    }
85
}
86