PHP观察器模式的实现代码

代码如下所示:
复制代码代码如下所示:
观察者是抽象类。
课堂观察工具splsubject {
保护_name美元;
保护_observers美元;

实例化,生成一个观察对象
公共功能__construct(){
美元-> _observers =新splobjectstorage();
}

/ /添加观察者对象
公共功能的高度(splobserver $观测器){
这_observers美元-> ->附加($观察);
}

删除对象查看器
公共职能分离(splobserver $观测器){
这_observers美元-> ->分离($观察);
}

通知消息
公共函数通知(){
foreach(美元-> _observers达观测器){
观察者- >被美元(美元);
}
}

方法:一般设置
公共职能setName($name){
美元-> _name = $名称;
$ $ >通知();
}

方法:常用值/
公共职能getName(){
返回_name美元->;
}

方法:设定年龄/一般
公共功能setage($岁){
美元=年龄=年龄;
foreach(美元-> _observers达观测器){
观察-> showage美元(美元-> _name,美元->年龄);
}
}

}

观察者抽象类
课堂观察工具splobserver {

显示/消息
公共功能被(splsubject $ obj){
用户=美元美元obj -> getName();
如果(用户= = = 'admin美元){
你好,,$用户,欢迎你进入管理后台;
其他{ }
你好,回声user'you美元已被添加到用户列表。
}
}
这是从父类继承的抽象方法。
更新函数(splsubject $){ }

显示年龄
公共功能showage($name,$AGE){

}
}

$主体=新的(观察);创建一个观察对象
为观察=新(观察者); / /创建一个类的对象
$主题>附加($观察者);观察者被观察到传播。
受美元-> setName(三); / /调用setName方法
*
*通过表面的setName称美元->通知();
* the $observer->showMessage ($this) method is called by calling $this->notify (),
*即的showMessage($ obj)每个观察对象的方法;
* /
受美元-> setName('admin);
$(24)-> setage;