Mojaviのロギングやエラーハンドリングを見ていて、普通のPHPでもエラーハンドリングについてよく解ってなかったことに気づきました。
PHP自体の機能を使ってシンプルなエラー処理の正解(宣言してしまえば反対意見が出るまで正解と言い張れる)を作ってみました。
<?php
include_once("getContents.php");
// 行数の取得
function getNumLines() {
$contents = getContents();
if ($contents === false) {
trigger_error("getNumLines(): 行数の取得に失敗しました", E_USER_WARNING);
return false;
}
return count($contents);
}
?>
- エラーメッセージはその関数(メソッド)を実行した奴から見た内容にする。
- pg_connectの失敗だってE_WARNINGなのでJavaの(Exceptionじゃなく)Errorのようにスクリプトを実行し続けることができないような致命的なものだけE_USER_ERRORレベルのエラーを発生させる。(大体はE_USER_WARNING)
- どのレベルからエラーを出すかは、error_reportingディレクティブで設定する。
- ログはerror_logディレクティブで設定する。
これであってるのかどうか気になる!
すごい基本なのにわからないこと多過ぎです。