~~~
<?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();
~~~
- 简介
- php基础
- 运行环境
- apache
- 安装
- 目录
- httpd.conf
- php
- mysql
- 常量变量
- 变量
- 常见操作
- 变量传值
- 预定义变量
- 作用域
- 常量
- 定义
- 常用操作
- 预定义常量
- 魔术常量
- 区别
- 文件加载
- 四种方式
- php提高
- cookie
- 面向对象
- 类
- 定义
- $this和self
- 属性与方法
- 成员属性和成员方法
- 成员属性
- 成员方法
- 静态属性和静态方法
- 静态属性
- 静态方法
- 类常量
- 构造方法
- 析构方法
- 最终类和最终方法
- 抽象类和抽象方法
- 内存
- 三要素
- 封装
- 继承
- 多态
- 接口
- 类的自动加载
- 对象克隆
- 常用魔术方法
- 设计模式
- 单例模式
- 工厂模式
- 简单工厂模式
- 升级版
- 观察者模式
- 1
- 责任链模式
- 序列化
- mysql
- 连接数据库
- 数据类型
- enum和set
- 框架
- composer
- 安装
- 开发扩展
- 创建项目
- 提到代码到仓库
- packagist
- tp
- 开启php扩展
- tp5.1环境搭建
- 常用扩展
- 验证码
- mongodb
- 中间件
- laravel
- 安装
- 插件
- laravel-ide-helper
- 扩展
- QueryList