====== エラーハンドラー - Whoops ====== Version 2.7 ([[https://github.com/filp/whoops/blob/master/LICENSE.md|MIT License]]) --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-03-18// [[basic-library:top|定番ライブラリー に戻る]] 関連記事 * [[basic-library:project|プロジェクトの作成 - Apricot (α版)]] * [[basic-library:phpdotenv:4.1|環境変数 - phpdotenv]] * [[basic-library:monolog:2.0|ログ出力 - monolog]] * [[basic-library:idiorm:1.5|ORマッパー - Idiorm]] * [[basic-library:bladeone:3.37|テンプレートエンジン - BladeOne]] * [[basic-library:fast-route:1.3|リクエストルーター - FastRoute]] * [[basic-library:league-container:3.3|DIコンテナー - League/Container]] * [[basic-library:valitron:1.4|バリデーター - Valitron]] * エラーハンドラー - Whoops * [[basic-library:php-debugbar:1.16|デバッグ出力 - php-debugbar]] リンク * https://github.com/filp/whoops --- whoopsの本家 * https://github.com/filp/whoops/blob/master/docs/API%20Documentation.md --- APIドキュメント === Code-Prettify === * Whoops は Code-Prettify を含んでいます。それは[[https://github.com/google/code-prettify/blob/master/COPYING|Apache License 2.0]]下で公開されています。 * Code-Prettify は Googleによって公開されているHTMLに含まれるソースコードを装飾して見やすくするためのCSS&JavaScriptライブラリです。 * https://github.com/google/code-prettify --- Code-Prettifyの本家 テストプログラムの所在 {Project Folder}\test\ ---- ===== Whoopsについて ===== どんなプログラム開発にも集約例外ハンドラーは必要です。それは、いわゆる ''Uncaught Exception Handler''とも呼ばれ、誰にも補足されなかった例外を処理するハンドラーのことです。この集約例外ハンドラーのお陰で、開発時の問題の早期発見や、運用時の例外発生時のログ収集が可能になります。 Whoopsは、PHPのエラーハンドラーフレームワークで、非常に優れたエラーインターフェイスを提供してくれます。Whoopsのお陰で、PHPが本来提供している''Uncaught Exception Handler''用の [[https://www.php.net/manual/ja/function.set-exception-handler.php|set_exception_handler()]] を書かなくても済みます。本当に pretty cool な存在です。 Whoopsは、Laravel5.5以上には既に組み込まれており、CakePHP、Zend Framework、FuelPHP、Phalcon、Slimなどに統合する方法はそれぞれのコミュニティで手順が公開されており、PHPのデバッグツールとしてのWhoopsの選定に関しては異論の余地がありません。 \\ ===== インストール ===== composer require filp/whoops Using version ^2.7 for filp/whoops ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 1 install, 0 updates, 0 removals - Installing filp/whoops (2.7.1): Downloading (100%) filp/whoops suggests installing symfony/var-dumper (Pretty print complex values better with var-dumper available) filp/whoops suggests installing whoops/soap (Formats errors as SOAP responses) Writing lock file Generating autoload files 1 package you are using is looking for funding. Use the `composer fund` command to find out more! >Note: >Eclipse起動中にパッケージを取得した場合は、プロジェクト・エクスプローラー内の[プロジェクト(apricote)]を右クリックして[リフレッシュ]を選択して下さい。また、新しく取得したパッケージのインテリセンスが有効にならない場合は、プロジェクトのビルトまたはクリーン&ビルドを行ってビルドリストの更新を行って下さい。 パッケージの取得が終わると ''composer.json'' の ''require'' に以下が追加されます。 { "require": { "filp/whoops": "^2.7" } } \\ ===== テストプログラム ===== パッケージのテストフォルダ(''test\'')に、テスト用のコード(''whoops.php'')を作成し実行します。この例では、''DEBUG_MODE'' が ''true'' の場合はデバッグ用の ''PrettyPageHandler()''が、''false'' の場合は本番用のカスタムハンドラーが呼び出されます。''PrettyPageHandler()'' は、例外や環境変数などの障害の切り分けに必要な多くの情報を綺麗に整形して表示してくれます。詳細はコード内のコメントを参照して下さい。 getMessage()); // エラ画面の表示 var_dump($exception->getMessage()); return Whoops\Handler\Handler::DONE; }; // エラーハンドラーをデバッグモードと本番モードで切り替える $whoops = new \Whoops\Run; if(DEBUG_MODE) { $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler); } else { $whoops->pushHandler($UncaughtExceptionHandler); } $whoops->register(); // 例外の発生!! throw new Exception("Whoops!!"); === 実行結果 === デバッグモードの表示( ''DEBUG_MODE = true'' ) - //PrettyPageHandler()// [{{basic-library:whoops:whoops01.png?nolink}}] \\ 本番モードの表示( ''DEBUG_MODE = false'' ) - //カスタムハンドラー// D:\usr\ws2019\apricot\test\whoops.php:10:string 'Whoops!!' (length=8)