エラー制御
今日のハマりどころ。
フレームワークのエラー制御と標準のエラーハンドラを統合するところで気が付きにくいポイントがあった。
set_error_handler()でユーザ指定の関数を登録すると、@(エラー制御演算子)がついてる場合でもエラーが表示されてしまう。
標準のエラーハンドラはerror_reporting()で判断しているので、同じような動作をさせるためには
function output(){ if (error_reporting() === 0) return; ....// エラー出力処理 }
のようにerror_reportingの値を見て判断する。
@がついている場合はerror_reportingがゼロに設定される。
要するに@付き関数の処理の間だけerror_reportingがゼロに設定され、それを抜けると元のerror_reportingの値に戻るらしい。