すべてのエラーをキャッチし、そのタイプに応じて、ある種の操作を実行したいと思います。次の種類のエラーを処理したいと思います。
- 通知
- 警告
- エラー
- 重大なエラー
- アラート
- 緊急事態
set_error_handler()関数でこれらを実行できますか?
また、E_USER_WARNINGとE_WARNINGに違いはありますか?
すべてのエラーをキャッチし、そのタイプに応じて、ある種の操作を実行したいと思います。次の種類のエラーを処理したいと思います。
set_error_handler()関数でこれらを実行できますか?
また、E_USER_WARNINGとE_WARNINGに違いはありますか?
PHPマニュアルから派生した簡単な例を次に示します。
<?php
error_reporting(0);
set_error_handler('handle_error', E_ALL);
function handle_error($errno, $errmsg, $filename, $linenum, $vars) {
$errors = array(
E_ERROR => 'Error',
E_WARNING => 'Warning',
E_PARSE => 'Parsing Error',
E_NOTICE => 'Notice',
E_CORE_ERROR => 'Core Error',
E_CORE_WARNING => 'Core Warning',
E_COMPILE_ERROR => 'Compile Error',
E_COMPILE_WARNING => 'Compile Warning',
E_USER_ERROR => 'User Error',
E_USER_WARNING => 'User Warning',
E_USER_NOTICE => 'User Notice',
E_STRICT => 'Runtime Notice',
E_RECOVERABLE_ERROR => 'Catchable Fatal Error'
);
if(in_array($errno, array_keys($errors))) {
echo $errors[$errno];
}
}
$foo = NOT_DEFINED;
エラータイプを出力します。