質問

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 (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.

他のヒント

Try this

set_error_handler(array($this, 'customErrorHandler'));
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top