これが正しいかどうか教えてください。私のエラーハンドラでは、@エラーコントロールオペレータがエラーを抑制するために使用されたときを検出できる必要があります。なぜなら、いくつかの外部ライブラリ(悲しいことに)がそれを多く使うからです。カスタムエラーハンドラを使用しない場合と同様に、スクリプトの実行を続行する必要があります。エラー制御オペレータの検出
at-signを使用すると、PHPは一時的にerror_reportingを0に設定します。スクリプトの開始時にerror_reportingを0に設定します。これで美しいIF/ELSEの魔法を実行できます。フロントエンドにエラーが表示されないように、display_errorsも0に設定します。これはerror_reportingをオーバーライドしますが、それでも魔法の値を使用できます。
<?php
ini_set('display_errors',0);
error_reporting(E_ALL);
function error_handler($errno, $errstr, $errfile, $errline)
{
if (error_reporting()===0) return;
else die();
}
set_error_handler('error_handler');
//This issues an error, but the handler will return and execution continues.
//Remove the at-sign and the script will die()
@file();
echo 'Execution continued, hooray.';
?>
ここにキャッチはありませんか?
+1。この確認は私が必要なすべてでした。悲鳴の拡張子は有用であるように見えるかもしれません。しかし、今日のケースではない、私はちょうど私のアプリケーションがそこになかったかのようにそれをすることができるように外部ライブラリをしたい。 –