読者です 読者をやめる 読者になる 読者になる

an odd fellow

読書と写真と情報工学

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導入に至りました。

Ladybug

Exampleを見てわかるとおり、たいへん見良くて、扱いやすいです。オブジェクトのメソッドの表示もできます。debug.html.twigなども用意する必要がなく、コントローラでladybug_dump()と記述するだけでビューに表示してくれるので捗ります。導入も簡単だしおすすめです。

Ladybugの導入

導入はgithubのInstallationの通りですが、念の為メモしておきます。 Composerは導入されていることが前提です。

  1. composer.jsonに記述 composer.jsonsymfonyの一番上の階層にいます。こいつに
{
    "require": {
    "raulfraile/ladybug-bundle": "~1.0"
    }
}

と書きます。

  1. インストール
php composer.phar install

うまく行かない場合は

php composer.phar update

も試します。

  1. app/AppKernel.phpに追記します。
<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
    // ...
    new RaulFraile\Bundle\LadybugBundle\RaulFraileLadybugBundle(),
    );
}

以上で動きます。 あとはコントローラの中でオブジェクトの構造や、今どのような値を持っているのかしりたい変数をぶちこむだけ。

ladybug_dump($var);

しあわせ