この PHP エラー報告に関する簡単なヒントでは、PHP で使用可能なツールを使用して制御された方法でエラーを処理し、それによってデバッグの時間を節約する方法を見ていきます。
PHP は、定義上、「例外が少ない」プログラミング言語です。 これは、例外はありますが、致命的なエラーが発生しない限り、何が起こってもスクリプトを実行し続けることを意味します。
例えば:
echo $sitepoint;
上記のコードは、次のメッセージを返します。
Notice: Undefined variable: sitepoint in PHP shell code on line 1
PHP は通知エラーをスローするだけで、喜んで実行を続けます。 Python のような「例外が多い」言語は、エラーをスローして実行を停止します。
この動作のため、PHP 開発者はコードを記述する際に特に注意する必要があります。 通知は実行を停止しませんが、プログラムの正しい動作に影響を与える可能性があるため、プログラムの実行で予期しない結果が発生する可能性があります。
PHP でエラー レポート スタイルを調整する方法に入る前に、まず、PHP エラーの重大度のいくつかのレベルを理解しましょう。
PHP には、主に 3 種類のメッセージがあります。 エラー、 ノート、 と 警告. これらは、さまざまなレベルの重大度を表しています。 E_ERROR
、 E_NOTICE
、 と E_WARNING
.
-
エラー 致命的な実行時エラーであり、通常はコードの障害が原因で発生します。 これにより、PHP の実行が停止します。
-
特記事項 問題を引き起こすかどうかわからないコード (たとえば、未定義の変数) によって引き起こされるメッセージです。 これらは実行停止を引き起こしません。
-
警告 致命的ではないエラーであり、スクリプトの実行は停止しません。
PHP でのエラー ログ
デフォルトでは、PHP はエラーを記録しません。 そのためには、ログを開始するように具体的に指示する必要があります。 display_errors
PHP 構成ファイルの変数 ( php.ini
ファイル)。
このファイルでは、通知と警告もログに記録するかどうか、およびこのログを記録する場所を PHP に伝えることができます。
コード内からロギングをトリガーする可能性もあります。 これを行うには、 error_log()
関数。 エラー ログはこの記事の主な焦点ではないため、詳細についてはこちらを参照してください。
PHP エラー報告の変更
を使用して、デフォルトの PHP エラー報告動作を変更できます。 error_reporting()
関数。 この関数を使用すると、スクリプトの実行中にエラーのレベルを設定できます。 これは、1 つ以上の事前定義されたエラー定数を関数に渡すことによって行われます。
たとえば、エラーだけでなく通知も表示したい場合は、次のように使用できます。
error_Reporting(E_ERROR | E_NOTICE);
この宣言により、スクリプトの実行はエラーだけでなく通知でも停止されます。
エラーの抑制
エラー制御演算子 (@
)。 この演算子を式の先頭に置くことで、その式の直接の結果であるエラーは沈黙します:
echo @$sitepoint;
これはの値を出力します $sitepoint
存在する場合は、 NULL
そうでない場合は、(通知をスローする代わりに) 何も出力しません。
この演算子を使用すると、エラーが完全に隠されるため、十分に注意してください。 エラーになるだけでなく いいえ 表示されますが、エラー ログにも送信されません。
無害に見えるかもしれませんが、この演算子を使用することで、コード内のより深い構造上の問題を隠し、潜在的な誤った動作を隠すことができます。
例外を多用する言語としての PHP
最後に、PHP は「例外が多い」プログラミング言語としても使用できます。 通常の PHP エラーは、 ErrorException
PHPを拡張するクラス Exception
クラス。
次の例では、呼び出されたユーザー定義関数 errorhandler()
でエラーハンドラーとして設定されます set_error_handler()
関数。 それはスローします ErrorException
でファイルが見つからないために致命的なエラーが発生した場合 file_get_contents()
関数:
function errorHandler($severity, $message, $file, $line) {
if (!(error_reporting() & $severity)) {
return;
}
throw new ErrorException("Fatal Error:No such file or directory", 0, E_ERROR);
}
set_error_handler("errorHandler");
try {
$data=file_get_contents("sitepoint.txt");
echo $data;
} catch (ErrorException $e) {
echo $e->getMessage();
}
このメソッドを使用すると、例外を処理する方法で実行エラーを処理できます。 try…catch
そのような状況でどのように行動するかについての適切な指示を含むステートメント。
結論
要約すると、PHP は非常に緩やかな方法でエラーを処理する場合があります。 利用可能なツールを使用してそれらをより適切に処理し、言語を最大限に活用できるようにするのは、私たち開発者次第です。 この一連のツールを使用することで、制御された方法でエラーを処理できるため、デバッグにかかる時間を節約できます。