do_hooks()
作用:执行 Api Hook
回调函数。
语法: null do_hooks(string $api[, mixed $input])
参数:
$api
待执行的 API 名称,使用点语法,如user.add
$input
传入的参数或者获取模块信息时得到的数组
别名:
do_actions()
说明:
$input
参数是 Api Hook
回调函数的参数。在使用 add_hook() 函数为 API
添加回调函数时,回调函数可以选择传入 $input
参数,也可以不传入参数,可以选择返回值,也可以不返回。$input
参数是一个引用传递,默认值为 null
。但除了 null
外,其他返回值都会被应用到 $input
参数中,等待下一个回调函数接收它。
需要注意的是,如果在某一个 Api Hook
回调函数中,return error()
被调用,即设置了错误信息,那么序列中的其他回调函数将不会再被调用。ModPHP
不会也没有能力(在顾及 Socket
服务时)自动报告错误消息给调用器,你需要手动这么做。
在模块类方法中调用了 do_hooks()
函数后,你需要使用if(error()) return [error()](http://modphp.hyurl.com/function-error);
来判断在出现错误时将错误返回给调用器。
示例:
<?php
/** 自定义一个 Api 并绑定回调函数 */
add_hook('text.change', function($text){ //此时传入 $text 参数和不传入是一样的
$text = 'Hi, ModPHP';
return $text; //返回以应用更改
}, false);
$text = 'Hello, World!'; //这个 $text 和 add_hook() 中的 $text 不是一回事
do_hooks('test.change', $text); //执行回调函数
echo $text; //将输出 Hi, ModPHP
/** 错误控制 */
class something extents mod{
static function act($arg = array()){
do_hooks('mod.act', $arg); //可能会出现错误,错误信息存储在 error() 中
if(error()) return error(); //如果 error() 返回值不为空(有错误),则将错误返回给调用器
/** 其他代码 */
}
}