事件

事件可以将用户代码注入到请求生命周期各个阶段触发执行。

事件类初始化时默认读取event配置项,并注册配置事件。

配置示例

<?php
return [
'boot' => [
'app\event\Bootstrap::run'
],
'start' => [
'app\event\Csrf::run',
'framework\core\Auth::run'
],
'request' => [
'app\event\RequestTrim::run',
],
];

基本使用

// 注册事件
event($name, $call, $priority);
Event::on($name, $call, $priority);
// 触发事件
Event::trigger($name, ...$params);
// 检查事件
Event::has($name);
// 删除事件
Event::delete($name);
// 清理事件
Event::clean();

优先级

同一事件标签下注册了多个优先级相同执行方法时,系统不能保证方法按注册先后顺序执行。

中断执行

在同一事件标签注册了多个执行方法时,多个方法会按优先级依次执行,如果需要其中方法执行后中断后续其他方法执行,则只需此方法返回false

示例

Event::on('test', function () {
echo 1;
}, 1);
Event::on('test', function () {
echo 2;
return false;
}, 2);
Event::on('test', function () {
echo 3;
}, 3);
// 输出3和2
Event::trigger('test');

内置事件

框架已内置7个事件标签,这些事件将在请求生命周期的不同阶段触发。