ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルでの register_shutdown_function 関数を使用して致命的なエラーをインターセプトする例
この記事では、PHPで致命的なエラーをインターセプトするためにregister_shutdown_function関数を使用する例を中心に紹介します
必要な方は参考にしてください。プロジェクトに取り組んでいると、不注意から致命的なエラーが発生することがあります。 display_errors がオフに設定されている場合、ユーザーには空白のページが表示されます。 onにすると致命的なエラーメッセージが表示されます(もちろん普通の人はそんなことはしません)。
それでは、致命的なエラーを事前に捕捉し、独自のカスタムフレンドリーなフォームでユーザーにフィードバックする方法はあるのでしょうか? PHP には register_shutdown_function と呼ばれる関数があり、これを使用すると、実行がシャットダウンされたとき、つまり、スクリプトの実行が完了したとき、または予期せず終了して PHP の実行がシャットダウンされようとしたときに呼び出すことができる別の関数を設定できます。この関数が呼び出されます。
以下の例をご覧ください:
コードをコピーします。コードは次のとおりです:
$flag = false;
関数 deal_error(){
グローバル $flag;
if (!$flag){
die(「大雑把な質問です。後でもう一度試してください」);
}
false を返す;
}
register_shutdown_function("deal_error");
//致命的なエラーのため失敗します
//$obj = new NotExistClass() //未定義クラスの導入
;require('./test.php');
$flag = true;
プログラムの入り口でフラグを false に設定し、最後にプログラムが正常に実行されていることを示す true に設定します。最後にフラグが true でない場合は、途中でエラーが発生したことを意味します。この時点で、 register_shutdown_function が呼び出され、カスタマイズされたエラー結果が出力されます。
上記のクラスが定義されていなかったり、存在しないファイルが導入されたり(requireかrequire_onceを使う必要がある)等の場合、致命的なエラーにつながります。もちろん、プログラムに句読点がなかったり、余分な特殊文字などが含まれている場合は、何もすることができません。