[TOC]
### 組件說明
> hook組件其實就是一個全局的鉤子,可以在相應的地方綁定、觸發事件。
### 配置選項
| 配置名 | 參數類型 | 可選 | 默認值 | 說明 |
| --- | --- | --- | --- | --- |
| class | string | 是 | lying\service\Hook | 不可更改 |
| events | array | 是 | [] | |
### 示例配置
~~~php
'hook' => [
'class' => 'lying\service\Hook', //完整類名,可以不寫,因為是核心組件
'events' => [
['frameworkError', function ($event) {}],
['frameworkBegin', function () {}],
['frameworkEnd', ['Timer', 'tick']],
],
],
~~~
> 這邊的配置,其實就是在框架加載之前把相應的事件名和回調綁定到hook組件上,但是也因為如此,預先綁定的回調無法使用自動加載和未定義的參數以及變量。
配置的格式,events為一個數組,里面包含N個`[事件名稱, callback, 默認事件參數]`形式的的數組,其中默認事件參數不是必須的。
### 調用方式
~~~php
\Lying::$maker->hook();
\Lying::$maker->hook;
\Lying::$maker->get('hook');
~~~
### 在其他地方綁定事件
事件除了在配置文件預先定義和綁定之外,還可以再程序運行中進行綁定:
~~~php
\Lying::$maker->hook->on('frameworkEnd', function ($event) {
var_dump($event->sender);
});
~~~
### 移除事件
~~~php
$call = function ($event) {};
//卸載指定事件
\Lying::$maker->hook->off('frameworkEnd', $call);
//卸載所有事件
\Lying::$maker->hook->off('frameworkEnd');
~~~
### 觸發事件
~~~php
\Lying::$maker->hook->trigger('frameworkEnd', new Event());
~~~
* 事件按順序觸發,如果某一個事件返回了false,或者事件的參數$event->stop設置為true,則后面的事件都不會再觸發。
### 其他事件
請參考[事件章節](event.md)
- 序言
- 更新日志
- 安裝
- 規范
- 常量
- 配置
- 自動加載
- MVC
- 模塊
- 控制器
- 模型
- 視圖
- php原生模板
- 模板引擎
- 變量輸出
- 模板注釋
- 模板繼承
- 模板引用
- 流程控制
- 原樣輸出
- 服務組件
- Hook組件
- Request組件
- Router組件
- Cookie組件
- Encrypter組件
- Dispatch組件
- Response組件
- View組件
- Session組件
- Helper組件
- 數據分頁
- 數據驗證
- Logger組件
- Cache組件
- Redis組件
- Connection組件
- 執行sql語句
- 查詢生成器
- 查詢方法詳解
- Schema
- Captcha組件
- CLI
- CLI工具
- 事件
- 類事件
- 實例事件
- 全局事件
- 助手函數
- 擴展
- 異常
- 部署
- Apache
- Nginx
- IIS
- 虛擬主機