doumu6941 2013-08-21 06:28
浏览 62
已采纳

将参数传递给set_error_handler PHP中调用的函数

function errHandle($errNo, $errStr, $errFile, $errLine, $xmlArray) {
    $msg = "$errStr in $errFile on line $errLine";

    if ($errNo == E_NOTICE || $errNo == E_WARNING) {
        throw new ErrorException($msg, $errNo);
    } else {
        echo $msg;
        echo '<pre>';
    print_r($xmlArray);
    }
}

foreach($returnValues as $xmlArray){

....
....
set_error_handler(array($xmlArray, 'errHandle'));

}

Can i pass the array as parameter to errHandle function.

it is showing the Error: set_error_handler() expects the argument (SimpleXMLElement::errHandle) to be a valid callback in ...

Whole intention is to check, if there is a error in the iteration, then display that array to see the array contents in the function errHandle

  • 写回答

3条回答 默认 最新

  • douzhe9927 2013-08-21 06:37
    关注

    You can not do that directly, since there are strict rules for user-defined handler of errors. If you are defining error handler, you can rely on context from it - that context will be passed as the last parameter and will contain current scope (i.e. scope, from which error was triggered). Here's an example:

    function errHandle($errNo, $errStr, $errFile, $errLine, $errContext) {
        $msg = "$errStr in $errFile on line $errLine";
    
        if ($errNo == E_NOTICE || $errNo == E_WARNING) {
            throw new ErrorException($msg, $errNo);
        } else {
            echo $msg;
            echo '<pre>';
        print_r($errContext);
        }
    }
    
    $xmlArray=['foo'=>'bar'];
    set_error_handler('errHandle');
    
    trigger_error('test', E_USER_WARNING);
    

    you will be able to access $xmlArray from your parameter $errContext via corresponding key (i.e. 'xmlArray'). For more information see manual page.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 gwas 分析-数据质控之过滤稀有突变中出现的问题
  • ¥15 没有注册类 (异常来自 HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
  • ¥15 知识蒸馏实战博客问题
  • ¥15 用PLC设计纸袋糊底机送料系统
  • ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题
  • ¥15 51单片机显示器问题
  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案