<?php//观察者模式//适用场景:订阅者通知//自己对观察者模式对理解:// 需求:有事情变化你要通知我// 实现:// 1、要通知对人必须在我这里注册,否则我不知道要通知谁。// 2、想要获取通知的人必须遵守我的规则,实现我指定的通知事件,不然我没办法统一通知// 3、事件发生的时候我会逐一通知你们。//定义一个事件产生抽象类abstract class genEvent{ private $ob_servers = []; //增加观察者 public function addObs($ob_server) { $this->ob_servers[] = $ob_server; } //通知 public function notify() { if(!empty($this->ob_servers)) { foreach($this->ob_servers as $ob_server) { $ob_server->update(); // 逐个调用 } } }}//定义观察者接口interface obServer{ public function update($event_info = null);}class obServer1 implements obServer{ public function update($event_info = null){ echo "观察者1 收到执行通知\n"; }}class obServer2 implements obServer{ public function update($event_info = null){ echo "观察者2 收到执行通知\n"; }}class event extends genEvent{ //事件触发 public function trigger() { $this->notify(); }}//实现$event = new event();$event->addObs(new obServer1());$event->addObs(new obServer2());$event->trigger();