2009年01月12日

PHP:var_dump だって見やすくなりたい(デバッグ用 var_dump)

「この程度のスクリプトでデバッグ用ライブラリなんてかったりぃなぁ。」
ってな時などにvar_dumpをより見やすくする関数。
前回、var_dump が循環参照に意外と抵抗力があるってな記事を流したんで、これに乗じて今まで使ってた関数をアップグレードしました。しかも、調子こいて色付けやら強調やらも。
var_dump()を使う前に
http://blog.cles.jp/item/1512

pre タグでもいいのですが、string データに html ドキュメントや改行があるとそれもまた見難いので、ついでにそれも変換します。
PHPでvar_dump()を使ったお手軽デバッグコード by ウェブライフハック
http://www.mapee.jp/wlh/phpvar_dump.html

まー。実のところ、いままでは var_export の出力結果を整形してたんですが、これがいっつも循環参照でひっかかる。どうせデバッグ用なので、面倒がって見て見ぬ振りしましたが、とうとう我慢し切れず前回のテストに至った訳ですw
てことで var_dump を可視化エンジン(笑)にしたオブジェクトビジュアライズ関数(!)

■ やってくれること
・ WEBページで var_dump を見やすくする
・ 重要要素には文字修飾する

■ 出力例
object(stdClass)#1 (3) {
      ["ary"]=>
      array(3) {
          [0]=>
          int(100)
          [1]=>
          int(200)
          ["key"]=>
          string(5) "value"
      }
      ["txt"]=>
      string(34) "<div>html ドキュメント</div>"
      ["obj"]=>
      object(stdClass)#2 (1) {
          ["child"]=>
          object(stdClass)#3 (3) {
              ["name"]=>
              string(6) "太郎"
              ["old"]=>
              string(6) "4歳"
              ["recursive"]=>
              object(stdClass)#1 (3) {
                  ["ary"]=>
                  array(3) {
                      [0]=>
                      int(100)
                      [1]=>
                      int(200)
                      ["key"]=>
                      string(5) "value"
                  }
                  ["txt"]=>
                  string(34) "<div>html ドキュメント</div>"
                  ["obj"]=>
                  object(stdClass)#2 (1) {
                      ["child"]=>
                      object(stdClass)#3 (3) {
                          ["name"]=>
                          string(6) "太郎"
                          ["old"]=>
                          string(6) "4歳"
                          ["recursive"]=>
                          *RECURSION*
                      }
                  }
              }
          }
      }
  }


■ 出力例の試料
$a = new stdClass();
$a->ary = array(100, 200, 'key' => 'value');
$a->txt = '<div>html ドキュメント</div>';
$a->obj = new stdClass();
$a->obj->child = new stdClass();
$a->obj->child->name = '太郎';
$a->obj->child->old = '4歳';
$a->obj->child->recursive = $a;

var_html($a); // 出力


■ 自前の環境
PHP Version 5.2.3
System Windows NT
Server API Apache 2.0

続きを読む
posted by HiFa at 01:35 | 🌁 | Comment(0) | TrackBack(0) | ときどきPHP | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。