var_dumpのラッパー決定版!!

PHPでは、変数の中身を確認したいとき、
var_dumpや、var_export、print_rなどを使います。

問題1. 見にくい

しかし、改行がbrタグではなく、改行コードそのままなので、
ブラウザからみたとき改行されていなくて見にくい。

改行が出力されない問題については、
var_dumpの出力をpreタグで囲むだけの
独自関数を定義したりして、
ブラウザから変数の中身を確認しやすくしたりします。

問題2. どこに仕込んだかわけわからなくなる。。

さらに、var_dumpをいろんなところに仕込みすぎて、
どこに仕込んだかわからなくなってしまう問題もあります。

いろんなところに仕込みすぎてどこからvar_dumpを
実行したかわからなくなってしまった場合は、
debug_backtrace()関数でbackgraceを取得、
呼び出し元のファイル名等を調べます。

コード

上記の問題と解決ほうを全部仕込んだ関数が以下です。
もしよろしかったら参考になさってください。

<?php

/**
 * 変数を見やすい形式で標準出力に出力します
 * @param mixed $var
 * @return null
 */

function vd(){
    $values = func_get_args();

    // 呼び出し元の位置を特定します
    $db = debug_backtrace();
    if (isset($db[0])) {
        // ここにはお好みでスタイルなど仕込んでください。
        echo '<div style="color:white;background-color:gray;border-top-left-radius: 4px;border-top-right-radius: 4px;-moz-border-radius-topleft: 4px;-moz-border-radius-topright: 4px;border:1px solid #aaa;padding:10px;margin-top:0;">';
        echo $db[0]['file'];
        echo '@';
        echo $db[0]['line'];
        echo '</div>';
    }
    
    // preタグで囲って、変数の内容を展開します。
    // ここにもお好みでスタイルなど仕込んでください。
    foreach($values as $value){
    echo '<pre style="border-style:solid;border-color: #aaa;border-width:0 1px 1px 1px;padding:10px;margin-top:0;">';
    var_export($value);
    echo '</pre>';
    }
}

使い方

<?php
$data = array();
$data[0] = 111;
$data[1] = 'test';
$data[2] = new stdClass();
$data[2]->level2 = new ArrayObject(array('inArrayObject'));

vd($data);

出力