codecamp

error()

作用:设置出错信息并返回失败的操作结果。 语法: array error([mixed $data][, array $extra])

参数

  • $data 操作失败的提示信息或结果,也可设置未 nullfalse 用以清除错误信息。
  • $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('点赞失败。');
        }
    }
}
success()
current_file()
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

挂钩机制

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }