Completed
Pull Request — dev (#50)
by Arnaud
03:27
created

Registry   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 1
dl 0
loc 60
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A add() 0 7 2
A get() 0 8 2
A has() 0 4 1
A all() 0 4 1
1
<?php
2
3
namespace LAG\AdminBundle\Admin\Registry;
4
5
use Exception;
6
use LAG\AdminBundle\Admin\AdminInterface;
7
8
/**
9
 * Admin registry to store Admins along the request.
10
 */
11
class Registry
12
{
13
    /**
14
     * Admins registry.
15
     *
16
     * @var AdminInterface[]
17
     */
18
    protected $admins = [];
19
20
    /**
21
     * Add an Admin to the registry.
22
     *
23
     * @param AdminInterface $admin
24
     * @throws Exception
25
     */
26
    public function add(AdminInterface $admin)
27
    {
28
        if (array_key_exists($admin->getName(), $this->admins)) {
29
            throw new Exception('An Admin with the name "'.$admin->getName().'" has already been registered');
30
        }
31
        $this->admins[$admin->getName()] = $admin;
32
    }
33
34
    /**
35
     * Return an Admin from the registry.
36
     *
37
     * @param string $name
38
     * @return AdminInterface
39
     * @throws Exception
40
     */
41
    public function get($name)
42
    {
43
        if (!array_key_exists($name, $this->admins)) {
44
            throw new Exception('No Admin with the name "'.$name.'" has been found');
45
        }
46
47
        return $this->admins[$name];
48
    }
49
50
    /**
51
     * Return true if an Admin with the name $name has been registered.
52
     *
53
     * @param string $name
54
     * @return bool
55
     */
56
    public function has($name)
57
    {
58
        return array_key_exists($name, $this->admins);
59
    }
60
61
    /**
62
     * Return all the registered Admins.
63
     *
64
     * @return AdminInterface[]
65
     */
66
    public function all()
67
    {
68
        return $this->admins;
69
    }
70
}
71