Zend\Stdlib\ErrorHandlerは、PHPエラーを極めて簡単に扱えるクラスです。
通常PHPのエラー発生時は、画面に文字列としてエラーメッセージなどが表示されてしまいます。
わりかし扱いづらいので、ついつい@とかini_set('display_errors', 0);とかやってしまいがちです。
そこでErrorHandler。
PHPエラーを吸収し、例外として扱うことが可能になります。
まあset_error_handler()のラッパーです。
ErrorHandler::start()で開始、stop()で終了してエラーを捕捉できるという非常に楽な作りとなっています。
この際だからPHPエラーとはさよならしてしまいましょう。
通常PHPのエラー発生時は、画面に文字列としてエラーメッセージなどが表示されてしまいます。
わりかし扱いづらいので、ついつい@とかini_set('display_errors', 0);とかやってしまいがちです。
そこでErrorHandler。
PHPエラーを吸収し、例外として扱うことが可能になります。
まあset_error_handler()のラッパーです。
<?php
header('Content-type: text/html; charset=UTF-8');
require_once('path/to/channel/vendor/autoload.php');
use Zend\Stdlib\ErrorHandler;
// エラーハンドラ開始
ErrorHandler::start(E_ALL | E_STRICT);
// エラーはハンドラに奪われる
print($a); // Undefined variable:a
ereg('pattern', 'string'); // Function ereg() is deprecated
// パースエラーはさすがに無理
// hogehoge // Parse error: syntax error
// 例外はキャッチしない
// throw new Exception('なんか例外');
// エラーハンドラを終了して元に戻す
$exception = ErrorHandler::stop();
// stop()の返り値はErrorExceptionクラス
print($exception->getMessage()); // Function ereg() is deprecated
print($exception->getPrevious()->getMessage()); // Undefined variable:a
// 破棄して終了する場合はstop()のかわりにclean()
ErrorHandler::clean();
ErrorHandler::start()で開始、stop()で終了してエラーを捕捉できるという非常に楽な作りとなっています。
この際だからPHPエラーとはさよならしてしまいましょう。
PR