2
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'));

}

配列をパラメーターとして errHandle 関数に渡すことはできますか?

エラーが表示されています: set_error_handler() は、引数 (SimpleXMLElement::errHandle) が有効なコールバックであると想定しています ...

全体の意図は、反復にエラーがあるかどうかを確認し、その配列を表示して、関数 errHandle で配列の内容を確認することです

4

2 に答える 2

3

エラーのユーザー定義ハンドラーには厳密なルールがあるため、直接行うことはできません。エラー ハンドラーを定義している場合は、そのコンテキストに依存できます。そのコンテキストは最後のパラメーターとして渡され、現在のスコープ (つまり、エラーがトリガーされたスコープ) が含まれます。次に例を示します。

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);

対応するキー (つまり ) を介し$xmlArrayてパラメータからアクセスできます。詳細については、マニュアルページを参照してください。$errContext'xmlArray'

于 2013-08-21T06:37:34.207 に答える
2

これを試して

set_error_handler(array($this, 'customErrorHandler'));
于 2013-08-21T06:36:03.513 に答える