多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[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)