~~~
<?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