目次

デバッグ出力 - php-debugbar

Version 1.16 (MIT License)

y2sunlight 2020-03-18

定番ライブラリー に戻る

関連記事

リンク

テストプログラムの所在

{Project Folder}\test\

php-debugbarについて

エラーログと共にデバッグログ(デバッグライト)はプログラム開発では無くてはならない存在です。var_dump() は変数の中身を簡単に表示してくれる Cool な関数ですが、WEBプログラムでは適当な表示先が無いのでログファイルに書かなくてはなりません。そんな時に役立つのが php-debugbar です。

php-debugbarは、ブラウザにデバッグバーを表示し、PHPでデバッグ出力した情報を画面に綺麗に整形して表示してくれます。Whoops と同様に本当に pretty cool な存在です。whoops と php-debugbar はPHPデバッグ環境の最強バディと言ってもいいでしょう。

DebugBarには、ブリッジコレクターと呼ばれる他のパッケージとの統合方法が提供されており、ORMのDoctrinePropel、ログ出力のMonolog、メール送信のSwift Mailerなどがその例です。また、Laravel、Zend Framework、PhalconなどのPHPフレームワークとも統合されています。DebugBarもまた、PHPのデバッグツールとしての選定に関しては異論の余地がありません。

インストール

composer require maximebf/debugbar
Using version ^1.16 for maximebf/debugbar
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 3 installs, 0 updates, 0 removals
  - Installing symfony/polyfill-mbstring (v1.14.0): Downloading (100%)
  - Installing symfony/var-dumper (v5.0.5): Downloading (100%)
  - Installing maximebf/debugbar (v1.16.1): Downloading (100%)
symfony/var-dumper suggests installing ext-intl (To show region name in time zone dump)
symfony/var-dumper suggests installing symfony/console (To use the ServerDumpCommand and/or the bin/var-dump-server script)
maximebf/debugbar suggests installing kriswallsmith/assetic (The best way to manage assets)
maximebf/debugbar suggests installing predis/predis (Redis storage)
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": {
        "maximebf/debugbar": "^1.16"
    }
}


テスト

パッケージのテストフォルダ(test\)に、テスト用のコード(php-debugbar.php)を作成し実行します。この例では、DEBUG_MODEtrue の場合のみ Debug Bar が有効になります。詳細はコード内のコメントを参照して下さい。

/test/php-debugbar.php
<?php
require __DIR__.'/../vendor/autoload.php';
 
use DebugBar\StandardDebugBar;
 
// デバッグモード有効
const DEBUG_MODE = true;
 
// 標準のデバッグレンダラー(StandardDebugBar)の作成
// (DebugBar/Resourcesフォルダーは通常、publicフォルダにコピーして使用する方が良い)
$debugbar = new StandardDebugBar();
$base_url = '../vendor/maximebf/debugbar/src/DebugBar/Resources';
$debugbarRenderer = $debugbar->getJavascriptRenderer($base_url);
 
// デバッグライトはメッセージコレクターに出力する
// 使い方はvar_dump($var)と同じ
$arr = ['0'=>'apple','1'=>'banana','2'=>'chery',];
$debugbar['messages']->debug($arr);
 
// PSR-3 logger互換のログ出力
$debugbar['messages']->info("info");
$debugbar['messages']->notice("notice");
$debugbar['messages']->warning('warning');
$debugbar['messages']->error('error');
?>
<html>
    <head>
        <!-- デバッグモードの場合はJSライブラリを読み込む -->
        <?php if(DEBUG_MODE) echo $debugbarRenderer->renderHead() ?>
    </head>
    <body>
        ...
        <!-- デバッグモードの場合は、デバッグバーを表示する -->
        <?php if(DEBUG_MODE) echo $debugbarRenderer->render() ?>
    </body>
</html>

実行結果

■ 標準のデバッグレンダラーでは以下の表示ができます

■ デバッグ出力の種類毎にフィルタリングできます。
■ メッセージをクリックすると変数の展開できます。