EventManager   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 5
c 2
b 0
f 0
lcom 1
cbo 0
dl 0
loc 28
ccs 16
cts 16
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A attach() 0 7 2
A trigger() 0 12 3
1
<?php
2
namespace FastEventManager;
3
4
use SplPriorityQueue;
5
6
class EventManager
7
{
8
    /**
9
     * @var SplPriorityQueue[]
10
     */
11
    private $listeners = [];
12
13 38
    public function attach($name, callable $callable, $priority = 0)
14
    {
15 38
        if (!isset($this->listeners[$name])) {
16 38
            $this->listeners[$name] = new SplPriorityQueue();
17 19
        }
18 38
        $this->listeners[$name]->insert($callable, $priority);
19 38
    }
20
21 30
    public function trigger($regex, ...$args)
22
    {
23 30
        $events = array_keys($this->listeners);
24 30
        $eventsMatched = preg_grep($regex, $events);
25 30
        foreach ($eventsMatched as $event) {
26
            /* @var $listenersQueue SplPriorityQueue */
27 26
            $listenersQueue = $this->listeners[$event];
28 26
            foreach ($listenersQueue as $listener) {
29 26
                call_user_func($listener, $args);
30 13
            }
31 14
        }
32 28
    }
33
}
34