NameBasedResolver   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 4
dl 0
loc 43
ccs 14
cts 14
cp 1
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getEventListeners() 0 13 3
A extractEventName() 0 4 1
1
<?php
2
/**
3
 * @package narrator
4
 */
5
6
namespace Mleko\Narrator\ListenerResolver;
7
8
9
use Mleko\Narrator\EventNameExtractor;
10
use Mleko\Narrator\EventSource;
11
use Mleko\Narrator\ListenerResolver;
12
use Mleko\Narrator\Meta;
13
use Mleko\Narrator\ResolvedListener;
14
15
class NameBasedResolver extends AbstractListenerResolver implements ListenerResolver
16
{
17
18
    /** @var EventNameExtractor */
19
    private $eventNameExtractor;
20
21
    /**
22
     * NameBasedResolver constructor.
23
     * @param EventNameExtractor $eventNameExtractor
24
     */
25 9
    public function __construct(EventNameExtractor $eventNameExtractor)
26
    {
27 9
        $this->eventNameExtractor = $eventNameExtractor;
28 9
    }
29
30
    /**
31
     * @param object $event
32
     * @param EventSource $eventSource
33
     * @return ResolvedListener[]
34
     */
35 8
    public function getEventListeners($event, EventSource $eventSource)
36
    {
37 8
        $eventName = $this->extractEventName($event);
38 8
        $eventListeners = array_key_exists($eventName, $this->listeners) ? $this->listeners[$eventName] : [];
39
40 8
        $eventMeta = new Meta($event, $eventName, $eventName, $eventSource);
41
42 8
        $resolvedListeners = [];
43 8
        foreach ($eventListeners as $listener) {
44 8
            $resolvedListeners[] = new ResolvedListener($listener, $eventMeta);
45 8
        }
46 8
        return $resolvedListeners;
47
    }
48
49
    /**
50
     * @param object $event
51
     * @return string
52
     */
53 8
    private function extractEventName($event)
54
    {
55 8
        return $this->eventNameExtractor->extract($event);
56
    }
57
}
58