Pergunta

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

Foi útil?

Solução

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.

Outras dicas

Try this

set_error_handler(array($this, 'customErrorHandler'));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top