事件

事件注册

目前事件注册只能通过代码手动注册,不支持配置的方式注册, 例如为事件 event001 注册处理器

$eventManager = \X\Core\X::system()->getEventManager();

# 注册事件处理器
$eventManager->registerHandler('event001', function( $param1 ) {
    return "THIS IS CALLBACK RESPONSE";
});

# 注册事件结果
$eventManager->registerHandler('event001', "THIS IS A TEST RESULT");

当事件触发的时候,如果处理器是一个可调用的处理器,那么该处理器将会被执行,其返回结果将会返回给事件触发者,如果处理器不可以执行,那么,将直接返回该数据给触发者。

事件触发

事件需要手动触发, 例如触发上面的 event001

$eventManager = \X\Core\X::system()->getEventManager();
$result = $eventManager->trigger('event001', 'par001');

$result

array(
    "THIS IS CALLBACK RESPONSE",
    "THIS IS A TEST RESULT",
);

事件触发时能够传递任意多个参数,参数将会传递给事件处理器,以上面这个例子来说, 事件触发的时候传递一个参数值为 "par001", 那么, 第一个事件处理器中的 $param1 的值就是 "par001"

事件响应

事件触发完成后,返回的数据是包含每个处理器的返回结果数组。如果处理器没有返回,则对应未知的返回值为 null