エラーを例外に変換。

エラーを例外に変換するのは、一般的な手法らしい。

http://www.phppro.jp/news/185

function handleError ($errno, $errstr, $errfile, $errline) {
  if ($errno & error_reporting()) {
    throw new RuntimeException($errstr, $errno);
  }
}
set_error_handler('handleError');

サンプルではerror_reportingに対応していない様なので、修正してみた。

Smartyテンプレート上では、E_NOTICEが頻繁に発生する。(アサインしていない変数をif式から参照したり)
Smarty自身は、error_reportingを適宜書き換えることによってこの問題に対応している(Smarty::fetch())が、その仕組みをそのまま生かす為には、エラーハンドラの側でもerror_reportingに対応する必要がある。


以上、備忘録。