Completed
Push — 3.0 ( fb09f5...9f4a0e )
by Daniel
02:19
created

EventManager::listen()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 4
Metric Value
dl 0
loc 15
ccs 11
cts 11
cp 1
rs 9.2
cc 4
eloc 9
nc 3
nop 2
crap 4
1
<?php
2
3
namespace MagentoHackathon\Composer\Magento\Event;
4
5
use Composer\EventDispatcher\Event;
6
7
/**
8
 * Class EventManager
9
 * @package MagentoHackathon\Composer\Magento\Event
10
 * @author  Aydin Hassan <[email protected]>
11
 */
12
class EventManager
13
{
14
    /**
15
     * @var array
16
     */
17
    private $listeners = array();
18
19
    /**
20
     * @param string   $event
21
     * @param callable $callback
22
     */
23 3
    public function listen($event, $callback)
24
    {
25 3
        if (!is_callable($callback)) {
26 1
            throw new \InvalidArgumentException(sprintf(
27 1
                'Second argument should be a callable. Got: "%s"',
28 1
                is_object($callback) ? get_class($callback) : gettype($callback)
29 1
            ));
30
        }
31
32 2
        if (!isset($this->listeners[$event])) {
33 2
            $this->listeners[$event] = array($callback);
34 2
        } else {
35 2
            $this->listeners[$event][] = $callback;
36
        }
37 2
    }
38
39
    /**
40
     * @param Event $event
41
     */
42 9
    public function dispatch(Event $event)
43
    {
44 9
        if (!isset($this->listeners[$event->getName()])) {
45 8
            return;
46
        }
47
48 1
        foreach ($this->listeners[$event->getName()] as $listener) {
49 1
            call_user_func_array($listener, array($event));
50 1
        }
51 1
    }
52
}
53