多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
~~~ <?php /** * 观察者接口 */ interface ObServer{ public function update($event_info = null); } /** * 事件产生类 */ abstract class EventGenerator{ private $ObServers = []; public abstract function trigger(); //增加观察者 public function add(ObServer $obServer){ $this->ObServers[] = $obServer; } //通知观察者 public function notify(){ foreach ($this->ObServers as $ObServer){ $ObServer->update(); } } } /** * 观察者01 */ class ObServer01 implements ObServer{ public function update($event_info = null){ echo "ObServer01 收到通知"; } } /** * 观察者02 */ class ObServer02 implements ObServer{ public function update($event_info = null){ echo "ObServer02 收到通知"; } } /** * 事件 */ class Event extends EventGenerator{ //触发事件 public function trigger(){ //通知观察者 $this->notify(); } } //测试 //创建一个事件 $event = new Event(); //为事件增加观察者 $event->add(new ObServer01()); $event->add(new ObServer02()); //执行事件,通知观察者 $event->trigger(); ~~~