localdisk

PHP とか Java とか Web とか好きなことを書きます。

さよなら! var_dump! ようこそ CodeIgniter Profiler!

PHPer のみなさんこんにちは! 今日も元気に var_dump してますか? 僕はやってます! var_dump! var_dump!
でも CodeIgniter(以下CI) のおかけであんまり var_dump しなくなりました。せっかくなのでその方法をみなさんに向けてシェアしようと思います。

CI のプロファイラ使ってますか?

マニュアルにも書いてありますがコントローラーとかでこんな感じに書いてやればプロファイラが有効になります。

<?php
$this->output->enable_profiler();

するとブラウザにこんな感じに表示されます(画像は抜粋。ほかにもSQLやHTTPヘッダ、configの値なんが表示されます)。便利!

必要ないときは非表示にしたい!

こんな感じのCSSJavascriptを書くと幸せになれるかも。

css/style.css
#profiler {
    background: url('../images/nav_bg_darker.jpg') repeat-x transparent scroll left top;
    padding-right: 310px;
    text-align: right;
}
js/utility.js
$(function(){
    if ($('#codeigniter_profiler').length > 0) {
        var prof = $('<div>', {
            id: 'profiler',
            html: $('<img>', {
                height: 43,
                width: 154,
                alt: 'Toggle Profiler',
                title: 'Toggle Profiler',
                src: 'images/nav_toggle_darker.jpg'
            }),
            click: function() {
                $('#codeigniter_profiler').slideToggle();
            }
        });
        $('body').prepend(prof);
        $('body').prepend($('#codeigniter_profiler'));
        $('#codeigniter_profiler').css('display', 'none');
    }
});

するとこんな感じに。

CI のマニュアルみたいに必要なときにクリックすればスライドしてプロファイラの値が見ることができます。これでもっと便利!

リリース時には出力させたくない!

リリース時には必要ない! でもだからといってリリース時に記述を消すというのは美しくない! なので基底となるコントローラーにこんな感じの記述をしましょう。

application/core/MY_Controller.php(抜粋)
<?php
// development の場合 プロファイラを有効に
if (ENVIRONMENT === 'development') {
    $this->output->enable_profiler();
}

こうしておけばリリース時にindex.phpのENVIRONMENTをproductionと書き換えるだけでプロファイラーは出力されななくなります。もっともっと便利!
これで開発時のデバッグがかなり楽になるはずです。Let's Enjoy!