Pass Parameter to the function called in set

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


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 (ie 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 (ie 'xmlArray' ). For more information see manual page.


尝试这个

set_error_handler(array($this, 'customErrorHandler'));

For custom error message I have found good article below,

http://mydons.com/how-to-create-error-messages-like-codeigniter-drupal-and-custom-type-with-php/

链接地址: http://www.djcxy.com/p/58916.html

上一篇: 在C中设置errno值

下一篇: 将参数传递给set中调用的函数