EventsDispatcher::dispatch()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 4
c 0
b 0
f 0
dl 0
loc 8
rs 10
cc 2
nc 2
nop 1
1
<?php
2
declare(strict_types=1);
3
4
namespace OniBus\Buses;
5
6
use OniBus\Bus;
7
use OniBus\Chain;
8
use OniBus\ChainTrait;
9
use OniBus\Event\ProvidesEvent;
10
use OniBus\Message;
11
12
class EventsDispatcher implements Chain
13
{
14
    use ChainTrait;
15
16
    /**
17
     * @var Bus
18
     */
19
    protected $eventBus;
20
21
    /**
22
     * @var ProvidesEvent
23
     */
24
    protected $providesEvent;
25
26
    public function __construct(ProvidesEvent $providesEvent, Bus $eventBus)
27
    {
28
        $this->providesEvent = $providesEvent;
29
        $this->eventBus = $eventBus;
30
    }
31
32
    public function dispatch(Message $message)
33
    {
34
        $result = $this->next($message);
35
        foreach ($this->providesEvent->releaseEvents() as $event) {
36
            $this->eventBus->dispatch($event);
37
        }
38
39
        return $result;
40
    }
41
}
42