0

未定義の変数を使用しているときに 1 つのエラーを表示したいのですが、他の E_NOTICE エラーが表示されないようにしたいのですが、可能ですか?

4

1 に答える 1

2

公式には、警告や通知を生成しない PHP コードを作成する可能性が十分にあるため、これを行うことはお勧めしません。実際、それがあなたの目標であるべきです - すべての通知と警告を排除することです。

set_error_handler()ただし、エラーが発行されたときに実行するコールバック関数を受け入れるPHP のカスタム エラー処理を使用して、あなたが求めていることを達成することは可能です。

undefined indexおよびundefined variableエラー文字列$errstrコールバック パラメータで文字列照合を行う関数を定義します。これにより、実質的に PHP の通常のエラー報告システムをオーバーライドし、独自のものに置き換えています。これが素晴らしい解決策だとは思わないことを繰り返します。

$error_handler = function($errno, $errstr, $errfile, $errline) {
  if (in_array($errno, array(E_NOTICE, E_USER_NOTICE))) {
    // Match substrings "undefined index" or "undefined variable"
    // case-insensitively. This is *not* internationalized.
    if (stripos($errstr, 'undefined index') !== false || stripos($errstr, 'undefined variable') !== false) {
       // Your targeted error - print it how you prefer
       echo "In file $errfile, Line $errline: $errstr";
    }
  }
};

// Set the callback as your error handler
// Apply it only to E_NOTICE using the second parameter $error_types
// so that PHP handles other errors in its normal way.
set_error_handler($error_handler, E_NOTICE);

注: 上記は、英語以外の言語では自動的に移植されません。しかし、それがあなた自身の目的または限定された使用のためだけであれば、それは問題ではないかもしれません.

于 2014-11-16T21:13:28.013 に答える