Completed
Push — master ( 4ec7cb...21dc3c )
by Edwin
04:53
created

BroadcastManager::getBroadcasters()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php
2
3
namespace EdwinLuijten\Ekko;
4
5
use EdwinLuijten\Ekko\Broadcasters\BroadcasterInterface;
6
7
class BroadcastManager
8
{
9
    /**
10
     * @var array
11
     */
12
    protected $broadcasters = [];
13
14
    /**
15
     * @var BroadcasterInterface
16
     */
17
    private $default;
18
19
    /**
20
     * BroadcastManager constructor.
21
     * @param BroadcasterInterface $default
22
     */
23 33
    public function __construct(BroadcasterInterface $default)
24
    {
25 33
        $this->default = $default;
26 33
    }
27
28
    /**
29
     * @param string $broadcaster
30
     * @return BroadcasterInterface
31
     */
32 18
    public function connection($broadcaster = null)
33
    {
34 18
        return $this->broadcaster($broadcaster);
35
    }
36
37
    /**
38
     * @param string $broadcaster
39
     * @return BroadcasterInterface
40
     */
41 18
    public function broadcaster($broadcaster = null)
42
    {
43 18
        return $this->broadcasters[$broadcaster] = $this->get($broadcaster);
44
    }
45
46
    /**
47
     * @param string $broadcaster
48
     * @return BroadcasterInterface
49
     */
50 18
    protected function get($broadcaster)
51
    {
52 18
        if (is_null($broadcaster)) {
53 6
            return $this->default;
54
        }
55
56 12
        if (!isset($this->broadcasters[$broadcaster])) {
57 3
            throw new \InvalidArgumentException(sprintf('Broadcaster [%s] is not defined.', $broadcaster));
58
        }
59
60 9
        return $this->broadcasters[$broadcaster];
61
    }
62
63
    /**
64
     * @param string $name
65
     * @param BroadcasterInterface $broadcaster
66
     */
67 15
    public function add($name, BroadcasterInterface $broadcaster)
68
    {
69 15
        $this->broadcasters[$name] = $broadcaster;
70 15
    }
71
72
    /**
73
     * @return array
74
     */
75 3
    public function getBroadcasters()
76
    {
77 3
        return $this->broadcasters;
78
    }
79
80
    /**
81
     * @param $method
82
     * @param $arguments
83
     * @return mixed
84
     */
85 12
    public function __call($method, $arguments)
86
    {
87 12
        return call_user_func_array([$this->default, $method], $arguments);
88
    }
89
}
90