首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[函数]SplSubject::notify()函数—用法及示例

发布于 2025-05-07 21:08:34
0
8

函数名: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();
?>

输出结果:

主题对象的状态发生变化
观察者收到通知并更新状态
评论
啊龙
Lv.1普通用户

8568

帖子

29

小组

2696

积分

站长交流