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