0

初めてエラー処理を設定しようとしています。
実際には機能し、エラーがある場合はエラーを報告しますが、何らかの理由で、エラー処理関数自体の「引数の欠落」のエラーが常に表示されます。私のエラー処理機能は別のファイルにあり、インデックスページに含まれていることに注意してください。それが問題かどうかはわかりません:S

これが私のエラー処理関数です

function errorHandler($errno, $errstr, $error_file, $error_line) {

  if(isset($errstr)) {
    # There is an error, display it
    echo $errno." - ".$errstr." in ".$error_file." at line ".$error_line."<br>";
  } else {
    # There isn't any error, do nothing
    return false;
  }

}

// We must tell PHP to use the above error handler.
set_error_handler("errorHanlder");

こちらがインデックスページです

<!-- # Error Handler -->
<? if(errorHandler()) { ?>
<section id="error-handler">
  <?=errorHandler();?>
</section>
<? } ?>

これがブラウザでの結果です(phpエラーがないことを覚えておいてください。したがって、このエラーハンドラは何も出力しないはずです-これは私が理解できないことです

2 - Missing argument 1 for errorHandler(), called in index.php on line 20 and defined in inc/arcError.fnc.php at line 10
2 - Missing argument 2 for errorHandler(), called in index.php on line 20 and defined in inc/arcError.fnc.php at line 10
2 - Missing argument 3 for errorHandler(), called in index.php on line 20 and defined in inc/arcError.fnc.php at line 10
2 - Missing argument 4 for errorHandler(), called in index.php on line 20 and defined in inc/arcError.fnc.php at line 10

PHPが欠落している引数を報告している理由は何ですか?

4

1 に答える 1

7

ゼロ引数で関数を呼び出しています...

<?=errorHandler();?>

とにかくなぜそれを呼ぶ必要があるのですか?

また、コードにはいくつかのタイプミスがあります。「Hanlder」を「Handler」に置き換えます。

それを行う必要はありません:

if(isset($errstr)) {

エラー処理関数は、エラーが発生したときに自動的に呼び出されます(その場合のみ!)。$ errstrはこの関数のパラメーターであり、関数が実行されるときに常に設定されます。

新しいコード:

function errorHandler($errno, $errstr, $error_file, $error_line) {
    # There is an error, display it
    echo "<section id='error-handler'>$errno - $errstr in $error_file at line $error_line</section><br>";
}

// We must tell PHP to use the above error handler.
set_error_handler("errorHandler");
于 2012-07-07T11:58:09.250 に答える