文章目录

Spl中提供了两个接口来实现观察者模式
Subject需要实现3个具体方法,包括添加观察者,删除观察者,通知观察者
Observer需要实现一个接口,更新

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class ConcertSubject implements SplSubject{
private $obeservers;
private $value;
public function __construct()
{
$this->obeservers = new SplObjectStorage();
}
public function attach (SplObserver $observer){
$this->obeservers->attach($observer);
}
public function detach (SplObserver $observer){
$this->obeservers->detach($observer);
}
public function notify (){
foreach ($this->obeservers as $obeserver){
$obeserver->update($this);
}
}
public function setValue($value){
$this->value = $value;
$this->notify();
}
public function getValue(){
return $this->value;
}
}
class ConcertObserver implements SplObserver{
public function update (SplSubject $subject){
var_dump($subject->getValue());
}
}
$subject = new ConcertSubject();
$observer = new ConcertObserver();
$subject->attach($observer);
$subject->setValue(666);
文章目录