函数名:SplSubject::notify()
适用版本:PHP 5 >= 5.1.0, PHP 7
函数描述:SplSubject::notify() 通知所有观察者对象,当主题对象的状态发生变化时。
用法: SplSubject::notify(void): void
参数: 该函数没有参数。
返回值: 该函数没有返回值。
示例:
<?php
// 创建一个观察者类
class Observer implements SplObserver {
public function update(SplSubject $subject) {
echo "观察者收到通知并更新状态\n";
}
}
// 创建一个主题类
class Subject implements SplSubject {
private $observers = [];
public function attach(SplObserver $observer) {
$this->observers[] = $observer;
}
public function detach(SplObserver $observer) {
$index = array_search($observer, $this->observers);
if ($index !== false) {
unset($this->observers[$index]);
}
}
public function notify() {
foreach ($this->observers as $observer) {
$observer->update($this);
}
}
public function doSomething() {
// 主题对象的状态发生变化
echo "主题对象的状态发生变化\n";
// 通知所有观察者对象
$this->notify();
}
}
// 创建观察者和主题对象
$observer = new Observer();
$subject = new Subject();
// 将观察者对象附加到主题对象上
$subject->attach($observer);
// 主题对象的状态发生变化,触发通知
$subject->doSomething();
?>
输出结果:
主题对象的状态发生变化
观察者收到通知并更新状态