Completed
Push — master ( e6f585...763af6 )
by Korotkov
07:13 queued 05:12
created

FootballSubject::getName()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * @author    : Korotkov Danila <[email protected]>
7
 * @license   https://mit-license.org/ MIT
8
 */
9
10
namespace Behavioral\Observer;
11
12
/**
13
 * Class FootballSubject
14
 * @package Behavioral\Observer
15
 */
16
class FootballSubject implements SubjectInterface
17
{
18
19
    /**
20
     * @var string
21
     */
22
    protected $name;
23
    /**
24
     * @var array
25
     */
26
    protected $observers = [];
27
28
    /**
29
     * FootballSubject constructor.
30
     * @param string $name
31
     */
32
    public function __construct(string $name)
33
    {
34
        $this->name = $name;
35
    }
36
37
    /**
38
     * @param ObserverInterface $observer
39
     */
40
    public function attachObserver(ObserverInterface $observer): void
41
    {
42
        $this->observers[$observer->getName()] = $observer;
43
    }
44
45
    /**
46
     * @param string $name
47
     */
48
    public function detachObserver(string $name): void
49
    {
50
        if (array_key_exists($name, $this->observers)) {
51
            unset($this->observers[$name]);
52
        }
53
    }
54
55
    /**
56
     * @param EventInterface $event
57
     */
58
    public function notify(EventInterface $event): void
59
    {
60
        foreach ($this->observers as $observer) {
61
            printf("%s has get information about: %s %s \n",
62
                $observer->getName(), $this->name, $event->getName());
63
        }
64
    }
65
66
    /**
67
     * @return mixed
68
     */
69
    public function getName(): string
70
    {
71
        return $this->name;
72
    }
73
}
74