Symfony Component Advent Calendar 2023の5日目の記事です。
開発時のエラー箇所発見のお手伝い、"ErrorHandler"
ErrorHandler
は、開発時にエラー箇所の特定を容易にするコンポーネントです。
Symfonyを使っている人であれば、見たことあるエラー画面だと思います。この画面の出力のお手伝いをしているコンポーネントです。Symfony以外でも動作します。
インストール
composer require symfony/error-handler
使い方
Symfonyにはすでに仕込まれているので、意識することないとは思いますが、使うこと自体はとても簡単です。
use Symfony\Component\ErrorHandler\ErrorHandler;
ErrorHandler::register(); // ErrorHandlerの登録
throw new \LogicException('error'); // わざとException
ErrorHandlerを利用しない場合、PHPをコンソールで実行するとこんな感じになります。
PHP Fatal error: Uncaught LogicException: error in /path/to/error.php:9
Stack trace:
#0 {main}
thrown in /path/to/error.php on line 9
Fatal error: Uncaught LogicException: error in /path/to/error.php:9
Stack trace:
#0 {main}
thrown in /path/to/error.php on line 9
これがErrorHandler::register()
を仕込んでおくだけで
LogicException {#6
#message: "error"
#code: 0
#file: "./error.php"
#line: 9
}
こうなります。見やすい。
デバッグモード
上記のような記述で、Web上で例外が起こると、
こうなります。これだと開発中はどんなエラーがでたのかがちょっとわかりません。そこで利用するのがDebug
です。
use Symfony\Component\ErrorHandler\Debug;
Debug::enable(); // デバッグ用のErrorHandlerの登録
throw new \LogicException('error'); // わざとException
こうすると
こうなります。いつもの画面です。
まとめ
今回はErrorHandler
でした。やってることはシンプルなコンポーネントですが、開発時の強い味方です!