综述
为了在不破坏框架整体流程的前提下,保证灵活度,框架有“插件”功能。插件可以在一些特殊事件时触发,根据用户需要进行一些修改。
在插件中可以使用协程,但请注意判断当前是否为Task进程。Task进程没有创建协程上下文,因此无法使用协程。
插件总体规则
先注册先调用
先注册的插件将会被先调用
单一返回
一个事件可以注册多个插件。触发时,会循环调用每个插件,直到返回结果不为NULL。例如:
class PluginTest {
public static $isTrigger = 0;
public static function callback1($data) {
self::$isTrigger = 1;
return NULL;
}
public static function callback2($data) {
return '_t_' . $data;
}
public function testSeveralPlugin() {
Plugin::register('test', 'PluginTest::callback2');
Plugin::register('test', 'PluginTest::callback1');
echo Plugin::trigger('test', ['_test_data_']); //输出:_t__test_data_
echo self::$isTrigger; //输出:0
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16