DefaultProvider   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
eloc 10
dl 0
loc 37
rs 10
c 1
b 1
f 0
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A addListener() 0 3 1
A listen() 0 3 1
A getListenersForEvent() 0 10 3
1
<?php
2
3
namespace ByTIC\EventDispatcher\ListenerProviders;
4
5
/**
6
 * Class DefaultProvider
7
 * @package ByTIC\EventDispatcher\ListenerProvider
8
 */
9
class DefaultProvider extends PriorityListenerProvider
10
{
11
    use Traits\ListenForInterfacesTrait;
0 ignored issues
show
Bug introduced by
The trait ByTIC\EventDispatcher\Li...istenForInterfacesTrait requires the property $listeners which is not provided by ByTIC\EventDispatcher\Li...oviders\DefaultProvider.
Loading history...
12
13
    /**
14
     * @inheritDoc
15
     */
16
    public function getListenersForEvent(object $event): iterable
17
    {
18
        yield from parent::getListenersForEvent($event);
19
20
        if (method_exists($event, 'eventName')) {
21
            yield from $this->getListenersForEventName($event->eventName());
22
        } elseif (method_exists($event, 'getName')) {
23
            yield from $this->getListenersForEventName($event->getName());
24
        }
25
        yield from $this->getListenersForEventInterfaces($event);
26
    }
27
28
    /**
29
     * @param string $eventName
30
     * @param callable|string $listener
31
     * @param int $priority
32
     */
33
    public function addListener(string $eventName, $listener, int $priority = ListenerPriority::NORMAL): void
34
    {
35
        $this->attach($listener, $priority, $eventName);
36
    }
37
38
    /**
39
     * @param string $eventName
40
     * @param callable|string $listener
41
     * @param int $priority
42
     */
43
    public function listen(string $eventName, $listener, int $priority = ListenerPriority::NORMAL): void
44
    {
45
        $this->attach($listener, $priority, $eventName);
46
    }
47
}
48