Symfony2でdebug情報を表示するLadybug
Symfony のコントローラでオブジェクトの構造を知りたいときに今までは debug.html.twig というのを作成して render 関数で投げていました。
return render('Acme/DemoBundle:Default:debug.html.twig', array( 'debug' => array(1,2,3), ))
debug.html.twig の中身はこんなかんじ
{{dump(debug)}}
そうすると
array(3){1,2,3}
みたいな感じで表示してくれます。
しかしながら、render でもっと複雑なオブジェクトを投げてもオブジェクトのメソッドは表示してくれないし、そもそも app/logs/dev.log に
[2014-07-10 11:57:25] emergency.EMERGENCY: Allowed memory size of 134217728 bytes exhausted (tried to allocate 128974848 bytes)
などとエラーを吐いてホワイトアウトして何も表示してくれなかったりします。 php.ini の memory_limit がデフォルトだと 128MB なので、これを大きくすると改善するという話を見つけたので、512MB、 1024MB ・・・と試したけれど改善しませんでした。
そういうわけで、さらに調べていると、もう debug 用の asset 使ったほうがいいよという情報を Stack Overflow から得てLadybug導入に至りました。
Exampleを見てわかるとおり、たいへん見良くて、扱いやすいです。オブジェクトのメソッドの表示もできます。debug.html.twigなども用意する必要がなく、コントローラでladybug_dump()と記述するだけでビューに表示してくれるので捗ります。導入も簡単だしおすすめです。
Ladybugの導入
導入はgithubのInstallationの通りですが、念の為メモしておきます。 Composerは導入されていることが前提です。
{ "require": { "raulfraile/ladybug-bundle": "~1.0" } }
と書きます。
- インストール
php composer.phar install
うまく行かない場合は
php composer.phar update
も試します。
- app/AppKernel.phpに追記します。
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new RaulFraile\Bundle\LadybugBundle\RaulFraileLadybugBundle(), ); }
以上で動きます。 あとはコントローラの中でオブジェクトの構造や、今どのような値を持っているのかしりたい変数をぶちこむだけ。
ladybug_dump($var);
しあわせ