Observatory::notifyOnUpdateFailed()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 8
rs 9.4285
cc 3
eloc 4
nc 3
nop 1
1
<?php
2
3
namespace R\Hive\Concrete\Observers;
4
5
use R\Hive\Contracts\Data\MessageInterface;
6
use R\Hive\Contracts\Handlers\OnCreateInterface;
7
use R\Hive\Contracts\Handlers\OnDestroyInterface;
8
use R\Hive\Contracts\Handlers\OnUpdateInterface;
9
use R\Hive\Contracts\Instances\InstanceInterface;
10
use R\Hive\Contracts\Observers\ObservatoryInterface;
11
use R\Hive\Contracts\Observers\ObserverInterface;
12
13
class Observatory implements ObservatoryInterface
14
{
15
    protected $observers = [];
16
17
    public function getObservers()
18
    {
19
        return $this->observers;
20
    }
21
22
    public function notifyOnCreateFailed(MessageInterface $message)
23
    {
24
        foreach ($this->observers as $observer) {
25
            if ($observer instanceof OnCreateInterface) {
26
                $observer->createFailed($message);
27
            }
28
        }
29
    }
30
31
    public function notifyOnCreateSucceeded(InstanceInterface $instance)
32
    {
33
        foreach ($this->observers as $observer) {
34
            if ($observer instanceof OnCreateInterface) {
35
                $observer->createSucceeded($instance);
36
            }
37
        }
38
    }
39
40
    public function notifyOnDestroyFailed(MessageInterface $message)
41
    {
42
        foreach ($this->observers as $observer) {
43
            if ($observer instanceof OnDestroyInterface) {
44
                $observer->destroyFailed($message);
45
            }
46
        }
47
    }
48
49
    public function notifyOnDestroySucceeded(InstanceInterface $instance)
50
    {
51
        foreach ($this->observers as $observer) {
52
            if ($observer instanceof OnDestroyInterface) {
53
                $observer->destroySucceeded($instance);
54
            }
55
        }
56
    }
57
58
    public function notifyOnUpdateFailed(MessageInterface $message)
59
    {
60
        foreach ($this->observers as $observer) {
61
            if ($observer instanceof OnUpdateInterface) {
62
                $observer->updateFailed($message);
63
            }
64
        }
65
    }
66
67
    public function notifyOnUpdateSucceeded(InstanceInterface $instance)
68
    {
69
        foreach ($this->observers as $observer) {
70
            if ($observer instanceof OnUpdateInterface) {
71
                $observer->updateSucceeded($instance);
72
            }
73
        }
74
    }
75
76
    public function registerObserver(ObserverInterface $observer)
77
    {
78
        $this->observers[$observer->serial()] = $observer;
79
    }
80
81
    public function unregisterObserver(ObserverInterface $observer)
82
    {
83
        if (array_key_exists($observer->serial(), $this->observers)) {
84
            unset($this->observers[$observer->serial()]);
85
            $this->observers = array_values($this->observers);
86
        }
87
    }
88
}
89