普通、コーディング中にデバッグをするときはprint_rやvar_dumpなどを使って、プリントデバッグをするが、これは本番環境で残してしまうと変なところにテスト文を出力してしまい、営業の人などにすっごく怒られる。PHP Debug Barはそういった不安を減らすことが出来る。Symfony2などでも同様の仕組みが組み込まれている様子。
上記サイトのフッターについているメッセージバーがPHP Debug Barである。こちらから出すエラー分だけでなく、try/catchの例外処理。PDOを使えば動作中に使用したSQL文も出力するらしい。使ってみた感じではRequestのGet/Post変数出力が地味に便利だなと思いました。
インストール方法
Composerをインストールしていることが前提です。composer.jsonにつぎの記述を含めて php composer.phar install
{ "require": { "maximebf/debugbar": "1.*" } }
実装例
<?php /** * debug bar 用汎用クラス */ // デバッグ処理はglobalで持たせる require_once __DIR__ .'/../composer/vendor/autoload.php'; use DebugBar\StandardDebugBar; $debugObj = new StandardDebugBar(); $debugRenderer = $debugObj->getJavascriptRenderer(); $debugRenderer->setBaseUrl('./composer/vendor/maximebf/debugbar/src/DebugBar/Resources'); /** * debug_barにメッセージを出力する。 */ function debugOutput($mix) { global $debugObj; ob_start(); var_dump($mix); $dump = ob_get_contents(); ob_end_clean(); $debugObj['messages']->addMessage($dump); } ?> <!DOCTYPE html> <html> <head> <title>php debug barのテスト</title> <script> <?php $debugRenderer->renderHead(); ?> </script> </head> <body> <h1>ほげほげ</h1> <?php // メッセージ出力 $piyo = array('1','2','3'); debugOutput($piyo); ?> <?php $debugRenderer->render(); ?> </body> </html>
こんな感じ。ホームページのサンプルそのままだと、配列やObjectなどを出力できなかったのでちょっとカスタマイズしてみた。Viewクラスなどあればヘッダとフッタだけイジれば本番環境に影響を与えずインストールできます。テストのコメントアウトは全部messageで投げてしまえば、本番環境では出力側のヘッダとフッタを削除したら安心して公開できます。
ちょっとした小技的なライブラリですが弄りがいはありそうです。