Completed
Push — master ( d92413...ff1eea )
by Beñat
01:42
created

DomainEventPublisher::unsubscribe()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
3
/*
4
 * This file is part of the Shared Kernel library.
5
 *
6
 * Copyright (c) 2016-present LIN3S <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
declare(strict_types=1);
13
14
namespace LIN3S\SharedKernel\Domain\Event;
15
16
use LIN3S\SharedKernel\Domain\Model\DomainEvent;
17
18
/**
19
 * @author Beñat Espiña <[email protected]>
20
 */
21
final class DomainEventPublisher
22
{
23
    private static $instance;
24
25
    private $subscribers;
26
27
    private function __construct()
28
    {
29
        $this->subscribers = [];
30
    }
31
32
    public function __clone()
33
    {
34
        throw new DomainEventPublisherCloningIsNotAllowed();
35
    }
36
37
    public static function instance() : self
38
    {
39
        if (null === static::$instance) {
0 ignored issues
show
Comprehensibility introduced by
Since LIN3S\SharedKernel\Domai...nt\DomainEventPublisher is declared final, using late-static binding will have no effect. You might want to replace static with self instead.

Late static binding only has effect in subclasses. A final class cannot be extended anymore so late static binding cannot occurr. Consider replacing static:: with self::.

To learn more about late static binding, please refer to the PHP core documentation.

Loading history...
40
            static::$instance = new self();
0 ignored issues
show
Comprehensibility introduced by
Since LIN3S\SharedKernel\Domai...nt\DomainEventPublisher is declared final, using late-static binding will have no effect. You might want to replace static with self instead.

Late static binding only has effect in subclasses. A final class cannot be extended anymore so late static binding cannot occurr. Consider replacing static:: with self::.

To learn more about late static binding, please refer to the PHP core documentation.

Loading history...
41
        }
42
43
        return static::$instance;
0 ignored issues
show
Comprehensibility introduced by
Since LIN3S\SharedKernel\Domai...nt\DomainEventPublisher is declared final, using late-static binding will have no effect. You might want to replace static with self instead.

Late static binding only has effect in subclasses. A final class cannot be extended anymore so late static binding cannot occurr. Consider replacing static:: with self::.

To learn more about late static binding, please refer to the PHP core documentation.

Loading history...
44
    }
45
46
    public function subscribe(DomainEventSubscriber $domainEventSubscriber) : void
47
    {
48
        $this->subscribers[] = $domainEventSubscriber;
49
    }
50
51
    public function publish(DomainEvent $domainEvent) : void
52
    {
53
        foreach ($this->subscribers as $subscriber) {
54
            if ($subscriber->isSubscribedTo($domainEvent)) {
55
                $subscriber->handle($domainEvent);
56
            }
57
        }
58
    }
59
}
60