Completed
Push — master ( 64c020...1c45f5 )
by Nicolas
12s
created

EventBus::send()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 3

Importance

Changes 0
Metric Value
dl 0
loc 8
c 0
b 0
f 0
ccs 5
cts 5
cp 1
rs 10
cc 3
nc 3
nop 1
crap 3
1
<?php
2
declare(strict_types=1);
3
4
namespace BSP;
5
6
/**
7
 * EventBus execute listeners listening to a particular event.
8
 *
9
 * In order to do so, EventBus::listeners needs to be filled with listeners in its constructor:
10
 * Please pay attention that there can be multiple listeners to an Event.
11
 *
12
 * Exemple:
13
 * public function __constructor(DoSomethingOnDomainEvent $doSomethingOnDomainEvent) {
14
 *     $this->listeners[DomainEvent::class][] = $DoSomethingOnDomainEvent;
15
 * }
16
 */
17
abstract class EventBus
18
{
19
    /** @var EventListener[][] */
20
    protected $listeners = [];
21
22 1
    public function send(Event $event): void
23
    {
24 1
        if (isset($this->listeners[get_class($event)])) {
25 1
            foreach ($this->listeners[get_class($event)] as $listener) {
26 1
                $listener->listen($event);
27
            }
28
        }
29 1
    }
30
}
31