Windowsで作る - PHPプログラミングの開発環境
このページへのアクセス 今日: 3 / 昨日: 0 総計: 3505
文書の過去の版を表示しています。
Version 2.7 (MIT License)
— y2sunlight 2020-03-18
定番ライブラリー に戻る
関連記事
リンク
テストプログラムの所在
{Project Folder}\test\
どんなプログラム開発にも集約例外ハンドラーは必要です。いわゆる Uncaught Exception Handlerとも呼ばれ、それは誰にも補足されなかった例外を処理するハンドラーのことです。この集約例外ハンドラーのお陰で、開発時の問題の早期発見や、運用時の例外発生時のログ収集が可能になります。
Uncaught Exception Handler
whoopsは、PHPのエラーハンドラーフレームワークで、非常に優れたエラーインターフェイスを提供してくれます。whoopsのお陰で、PHPが本来提供しているUncaught Exception Handler用の 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 に以下が追加されます。
composer.json
require
{ "require": { "filp/whoops": "^2.7" } }
パッケージのテストフォルダ(test\)に、テスト用のコード(whoops.php)を作成し実行します。この例では、DEBUG_MODE が true の場合はデバッグ用の PrettyPageHandler()が、false の場合は本番用のカスタムハンドラーが呼び出されます。PrettyPageHandler() は、例外や環境変数などの障害の切り分けに必要な多くの情報を綺麗に整形して表示してくれます。詳細はコード内のコメントを参照して下さい。
test\
whoops.php
DEBUG_MODE
true
PrettyPageHandler()
false
<?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 = true
本番モードの表示( DEBUG_MODE = false ) - カスタムハンドラー
DEBUG_MODE = false
D:\usr\ws2019\apricot\test\whoops.php:10:string 'Whoops!!' (length=8)