正しくコーディングしたつもりでも、プログラムが思い通りに動かないことは少なくありません。ちょっとした勘違いでどこかに誤りがあるためですが、その誤りを見つけることはとても骨の折れる作業です。そのため、書いたプログラムが意図した通りに動くか、エラーがないか、エラーが出た場合はどこを修正すれば良いかを検証するデバッグ作業は重要です。
PHPでは、「var_dump」というデバッグに使用できる便利な関数があります。var_dumpは非常によく使用される関数であるため、使い方を覚えておくと良いでしょう。今回はデバッグで使える便利な関数var_dumpの使い方とツールを見ていきます。
var_dumpとは
var_dumpは引数に指定した変数または、処理命令の戻り値を詳細に出力できる関数です。デバッグ用のPHPツールとして紹介されている場合もありますが、正しくは関数です。PHPがインストールされている環境であれば使用でき、別途インストールする必要はありません。
echoやprintでは単純に値を出力するだけですが、var_dumpを使用すると「型+値」で出力されます。値がstring型であれば、文字列のバイト数も出力してくれます。
print_rとは
PHPの関数で、var_dumpによく似た「print_r」という関数があります。var_dumpのほうが詳細な情報を表示できるので、厳密なデバッグが可能になりおすすめです。しかし、引数に与えられた変数の型などの情報が必要なければ、「print_r」を使用してデバッグをすることもできます。
基本的なprint_rの使い方は以下の「var_dumpの使い方」でvar_dump()としている記述をprint_r()とすれば実行されます。両者の表示の違いを確認すれば、理解が早いでしょう。
var_dumpの使い方
var_dumpの使い方を簡単な例文で説明します。最初に変数”$test”に文字列”Hello world”を代入し、var_dumpで表示させてみます。
使用例1
$test = ‘Hello world’;
var_dump($test);
実行結果
string(11) “Hello world”
文字列であるため型は「string」になり、半角スペースも含め半角11文字なのでバイト数が「(11)」、変数$testに代入された値の「”Hello world”」が表示されます。
上記の例では文字列が代入されている変数を引数としてvar_dumpで表示しましたが、論理型(boolean)にvar_dumpを実行すれば「bool(true)」のように型と真偽値が表示されます。
整数(int)や浮動小数点(float, double)が代入された変数を引数に与えてvar_dumpを実行すれば、「float(123.45)」のように型と代入されている数値が表示されます。
また、var_dumpに複数の引数を与えて表示させることも可能です。複数の引数を表示する場合は、以下のように引数をカンマで区切って指定します。
使用例2
var_dump( $str, $num);
仮に変数「$str」には文字列「”Hello”」が代入されていて、変数「$num」には整数「100」が代入されていたとすると、以下のような実行結果が出力されます。
実行結果
string(5)”Hello”
int(100)
さらに、var_dumpの引数に配列(array)を渡すと配列の長さ、各インデックスの名前と格納された値の詳細をそれぞれ表示することができます。連想配列のような複雑なデータの確認が簡単にできるので、非常に便利です。
Google Chromeデベロッパーツール
最近ではよく使われているブラウザ「Chrome」ですが、デバッグ機能も充実しています。Chromeブラウザで右クリックして「検証」を選択すると、画面右側にデベロッパーツールが表示されます。このツールを利用することで、どの部分にバグがあるのかを見つけ出しやすくなります。
まとめ
ただ表示される内容が正しいかを判断するだけであれば、echoやprintでも十分です。しかし、初心者は数字を「数値」として扱うか、「文字列」として扱うかをよく認識しておらず、安易なエラーに戸惑うようなこともあるので、var_dumpで詳細を把握しておくことは大切です。
また、大規模なプログラムで自作関数を多く使っている場合などは、自作関数が意図した結果を返しているかを確認する際に、var_dumpは非常に有効です。Google Chromeデベロッパーツールと併せて、var_dumpでこまめにデバッグする習慣を身に付けましょう。