Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


サイドバー

メインメニュー

XAMPP アレンジ

IED

WSL2

道具箱

リポジトリ編

フレームワーク編

公開ソフトウェア

メタ
リンク


このページへのアクセス
今日: 2 / 昨日: 1
総計: 2344

basic-library:whoops:2.7

文書の過去の版を表示しています。


エラーハンドラー - 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.jsonrequire に以下が追加されます。

composer.json
{
    "require": {
        "filp/whoops": "^2.7"
    }
}


テストプログラム

パッケージのテストフォルダ(test\)に、テスト用のコード(whoops.php)を作成し実行します。この例では、DEBUG_MODEtrue の場合はデバッグ用の 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)

コメント

コメントを入力. Wiki文法が有効です:
 
basic-library/whoops/2.7.1584967721.txt.gz · 最終更新: 2020/03/23 21:48 by y2sunlight