ColdFusionでの開発において、cfdumpというとてもお世話になるCFタグがあります。
クエリの取得結果や構造体の中身を表示してくれます。PHPのvar_dumpと同じようなものです。
基本的な使い方
<cfset hoge = {test="hoge", test2="foo"}>
<cfdump var="#hoge#">
<cfscript>
hoge = {test="hoge", test2="foo"};
writeDump(hoge);
</cfscript>
以下のような感じで指定した変数内の情報をテーブル構造で表示してくれます。
応用編
cfdumpのパラメータについて
cfdumpについては意外とパラメータがあるので、知っておくと便利です。
| パラメータ名 | セット値 | 説明 |
|---|---|---|
| var | 出力対象の変数 | 出力対象となる変数を指定する。 ※このパラメータのみ必須 |
| expand | [YES] or [NO] | HTMLに出力した場合についてキー項目ごとで折りたたみが可能になっている。 デフォルトでは[YES]になっており、全ての項目について表示されており、 [NO]にすると折り畳まれた状態で表示される。 |
| label | 文字列 | 出力結果に対してラベルを付ける。 ダンプ結果を複数出す場合には指定した方が見やすくなる。 |
| top | 数値 | 配列、またはクエリの結果について 先頭から指定した数だけの配列、またはレコード表示する。 |
| format | [html] or [text] | [text]と指定した場合には結果が文字のみで出力される。 動作環境が重い場合には多少有効…かも。 |
| show | キー名 or 列名 ※「,」区切りで複数指定可能 |
指定したキー名、または列名のみを表示する。 |
| hide | キー名 or 列名 |
指定したキー名、または列名を省いた状態で表示する。 ※showを指定している場合はそちらが優先される。 |
| keys | 数値 | 先頭から指定した数のキーのみを表示する。 keys→hideの順番で適用されるようなので、 組み合わせて使う場合は注意が必要 ※構造体のみ使用可能 |
| metainfo | [YES] or [NO] | デフォルトでは[YES]になっており、実行されたSQL文などの情報を表示する。 [NO]にすることでクエリの取得結果のみを表示する。 動作環境が重い場合や複数の結果を出力する場合に使うと良いかも。 |
| output | [browser] or [console] or [filename] ※[filename]についてはパスとファイル名指定 |
指定した出力先にダンプ結果が出力される。 デフォルト値は[browser]に設定されており、 設定によってコンソール、ファイル出力に切り替えれる。 ※ファイル出力については、HTMLを出力している。 |
| abort | [YES] or [NO] | ダンプ出力後に処理を止めるかどうか |
サンプルソース
サンプルソースは下記の通りです。
<cfscript>
// 表示用データ作成処理
dispData = queryNew("id,shopname,menu", "integer,varchar,varchar");
queryAddRow(dispData);
querySetCell(dispData, "id", 1);
querySetCell(dispData, "shopname", "胡椒饅頭PAOPAO");
querySetCell(dispData, "menu", "酸辣胡椒");
queryAddRow(dispData);
querySetCell(dispData, "id", 2);
querySetCell(dispData, "shopname", "こにー");
querySetCell(dispData, "menu", "こにこにー");
</cfscript>
<!--- cfタグでの記載 --->
<cfdump var="#dispData#"
expand="yes"
label = "デバッグ"
top="2"
format="html"
metainfo="yes"
output="browser"
abort="no">
<cfscript>
// cfscriptでの記載
writeDump(var =dispData, // 出力対象データ
label ="デバッグ", // ラベル
expand ="yes", // 出力結果について折り畳んだ状態で出力する
top = 2, // 表示するレコード数
format ="html", // 表示方法
show ="shopname", // 指定した列を表示する
//hide ="state", // 指定した列を省略する
metainfo="yes", // クエリの関連情報を表示するか
output ="browser", // 結果の出力先
abort ="yes" // ダンプ表示後に処理を終了するか否か
);
writeOutput("abortを有効にしているのでこの処理は走らない。");
</cfscript>
実行結果
困ったらとりあえずdump、これ大事(:3_ヽ)_



