error()
作用:设置出错信息并返回失败的操作结果。
语法: array error([mixed $data][, array $extra])
参数:
$data
操作失败的提示信息或结果,也可设置未null
或false
用以清除错误信息。$extra
额外附加的信息
返回值:
如果设置了 $data
参数,则返回结果数组并至少包含两个键值对 [success]=>ture
, [data]=>$data
。
如果没有提供参数,则返回已设置的错误信息。
说明:
该函数既可以用在类方法中,也可以用在 Api Hook
回调函数中,它比 success()
函数具有更多灵活性和使用场景。
由于 ModPHP 程序需要同时兼顾 HTTP 和 Socket 服务器,所以模块类方法调用过程中不能出现使脚本停止运行的情况,所以使用 exit()
输出错误信息并结束程序是不可取的。
为此,ModPHP 设计了一种预设置错误信息的方式。例如,在 Api Hook 回调函数中,如果某一个函数触发了 error()
函数并设置错误信息,那么在函数序列中的其他回调函数将不会再被触发。而 error()
函数也将一直保持被设置的错误信息。如果你自己定义的函数或类方法需要实现这样的效果,也应该使用这种方式跳过执行。
在模块类方法中,在调用 do_hooks() 函数或者其他可能设置错误信息的程序之后,你必须使用if(error()) return error();
的方式,判断在存在错误的情况下,将错误返回给调用器而不再执行后面的代码。
某些时候,你可能需要使用 error(null);
来将已经设置的错误信息清除,以防止它阻碍程序的继续运行。例如,当你在程序中使用了形如{module}::get()
方法来获取数据时,如果数据不存在,那么error()
将存储着错误信息。如果你后面还需要运行其他的吗,则必须要先使用 error(null)
来清除错误信息。
示例:
<?php
add_action('post.like', function($arg){ //为类动态添加一个 LIKE 方法
do_hooks('post.like', $arg); //调用 Api Hook
if(error()) return error(); //如果 Api Hook 回调函数报告了错误,则将错误返回给调用器
if( 条件 ){
/** 需要执行的代码 */
return success('顶赞成功。');
}else{
return error('点赞失败。');
}
});
/** 或者在类中:*/
final class post extends mod{
static function like($arg){
do_hooks('post.like', $arg);
if(error()) return error();
if( 条件 ){
/** 需要执行的代码 */
return success('顶赞成功。');
}else{
return error('点赞失败。');
}
}
}