メインメニュー
XAMPP アレンジ
IED
WSL2
-
道具箱
リポジトリ編
フレームワーク編
公開ソフトウェア
メタ
リンク
- PHP ライブラリ
- PHP 言語
basic-library:whoops:2.7文書の過去の版を表示しています。
エラーハンドラー - Whoops
Version 2.7 (MIT License)
— y2sunlight 2020-03-18
関連記事
- エラーハンドラー - whoops
リンク
- https://github.com/filp/whoops — whoopsの本家
Code-Prettify
- Whoops は Code-Prettify を含んでいます。それは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
用のset_exception_handler()
を書かなくても済みます。筆者は、PHPのエラーハンドラーライブラリとしてはwhoops以外の選択枝を知りません。本当に pretty cool な存在です。
インストール
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
に以下が追加されます。- composer.json
{ "require": { "filp/whoops": "^2.7" } }
テストプログラム
パッケージのテストフォルダ(
test\
)に、テスト用のコード(whoops.php
)を作成し実行します。この例では、DEBUG_MODE
がtrue
の場合はデバッグ用のPrettyPageHandler()
が、false
の場合は本番用のカスタムハンドラーが呼び出されます。PrettyPageHandler()
は、例外や環境変数などの障害の切り分けに必要な多くの情報を綺麗に整形して表示してくれます。詳細はコード内のコメントを参照して下さい。<?php require __DIR__.'/../vendor/autoload.php'; // デバッグモード有効 const DEBUG_MODE = true; // 本番モードの例外集約ハンドラーの定義 $UncaughtExceptionHandler = function ($exception, $inspector, $run) { // エラーログの出力 // Log::error($exception->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()
本番モードの表示(
DEBUG_MODE = false
) - カスタムハンドラーD:\usr\ws2019\apricot\test\whoops.php:10:string 'Whoops!!' (length=8)
basic-library/whoops/2.7.1584967721.txt.gz · 最終更新: 2020/03/23 21:48 by y2sunlight
コメント