
- Yii 教程
- Yii - 首頁
- Yii - 概述
- Yii - 安裝
- Yii - 建立頁面
- Yii - 應用程式結構
- Yii - 入口指令碼
- Yii - 控制器
- Yii - 使用控制器
- Yii - 使用操作
- Yii - 模型
- Yii - 小部件
- Yii - 模組
- Yii - 檢視
- Yii - 佈局
- Yii - 資源
- Yii - 資源轉換
- Yii - 擴充套件
- Yii - 建立擴充套件
- Yii - HTTP 請求
- Yii - 響應
- Yii - URL 格式
- Yii - URL 路由
- Yii - URL 規則
- Yii - HTML 表單
- Yii - 驗證
- Yii - 特設驗證
- Yii - AJAX 驗證
- Yii - 會話
- Yii - 使用快閃記憶體資料
- Yii - Cookie
- Yii - 使用 Cookie
- Yii - 檔案上傳
- Yii - 格式化
- Yii - 分頁
- Yii - 排序
- Yii - 屬性
- Yii - 資料提供程式
- Yii - 資料小部件
- Yii - ListView 小部件
- Yii - GridView 小部件
- Yii - 事件
- Yii - 建立事件
- Yii - 行為
- Yii - 建立行為
- Yii - 配置
- Yii - 依賴注入
- Yii - 資料庫訪問
- Yii - 資料訪問物件
- Yii - 查詢生成器
- Yii - 活動記錄
- Yii - 資料庫遷移
- Yii - 主題
- Yii - RESTful API
- Yii - RESTful API 實踐
- Yii - 欄位
- Yii - 測試
- Yii - 快取
- Yii - 片段快取
- Yii - 別名
- Yii - 日誌記錄
- Yii - 錯誤處理
- Yii - 身份驗證
- Yii - 授權
- Yii - 本地化
- Yii - Gii
- Gii – 建立模型
- Gii – 生成控制器
- Gii – 生成模組
- Yii 有用資源
- Yii - 快速指南
- Yii - 有用資源
- Yii - 討論
Yii - 事件
您可以使用事件在某些執行點注入自定義程式碼。您可以將自定義程式碼附加到事件,當事件觸發時,程式碼將被執行。例如,當新使用者在您的網站上註冊時,日誌記錄物件可能會觸發userRegistered事件。如果類需要觸發事件,則應從yii\base\Component類擴充套件它。
事件處理程式是 PHP 回撥函式。您可以使用以下回調 -
指定為字串的全域性 PHP 函式。
匿名函式。
類名和方法的陣列(字串),例如 ['ClassName', 'methodName']
物件和方法的陣列(字串),例如 [$obj, 'methodName']
步驟 1 - 要將處理程式附加到事件,您應該呼叫yii\base\Component::on()方法。
$obj = new Obj; // this handler is a global function $obj->on(Obj::EVENT_HELLO, 'function_name'); // this handler is an object method $obj->on(Obj::EVENT_HELLO, [$object, 'methodName']); // this handler is a static class method $obj->on(Obj::EVENT_HELLO, ['app\components\MyComponent', 'methodName']); // this handler is an anonymous function $obj->on(Obj::EVENT_HELLO, function ($event) { // event handling logic });
您可以將一個或多個處理程式附加到事件。附加的處理程式按它們附加到事件的順序呼叫。
步驟 2 - 要停止處理程式的呼叫,您應該將yii\base\Event::$handled 屬性設定為true。
$obj->on(Obj::EVENT_HELLO, function ($event) { $event->handled = true; });
步驟 3 - 要將處理程式插入佇列的開頭,您可以呼叫yii\base\Component::on(),並將第四個引數傳遞為false。
$obj->on(Obj::EVENT_HELLO, function ($event) { // ... }, $data, false);
步驟 4 - 要觸發事件,請呼叫yii\base\Component::trigger()方法。
namespace app\components; use yii\base\Component; use yii\base\Event; class Obj extends Component { const EVENT_HELLO = 'hello'; public function triggerEvent() { $this->trigger(self::EVENT_HELLO); } }
步驟 5 - 要從事件中分離處理程式,您應該呼叫yii\base\Component::off()方法。
$obj = new Obj; // this handler is a global function $obj->off(Obj::EVENT_HELLO, 'function_name'); // this handler is an object method $obj->off(Obj::EVENT_HELLO, [$object, 'methodName']); // this handler is a static class method $obj->off(Obj::EVENT_HELLO, ['app\components\MyComponent', 'methodName']); // this handler is an anonymous function $obj->off(Obj::EVENT_HELLO, function ($event) { // event handling logic });
廣告