PHPのデバッグ方法についてまとめる

こんにちは、純平@junpeko516です。

 

プログラミングを勉強する中で、初学者にとって特に大事になってくる技術がデバッグです。

デバッグとは、プログラムが想定どおりの結果になっているか、どのような値が変数に入っているかを確認することですね。

 

今回は、プログラミングにおいて必須の技術、PHPでデバッグを行う方法をまとめてみました。

 

プログラミング初学者の参考になればと思います。


スポンサーリンク
[adsense]

 

とりあえずvar_dump()でおっけい

PHPには便利なデバッグ用の関数が用意されています。

その中でも、最も使用頻度の高いのが、この「var_dump()」という関数です。

 

正直、「var_dump()」さえあれば、大抵のデバッグは問題ありません。

 

使い方はvar_dump()のカッコの中に調べたい変数を入れるだけです。

var_dump(変数)

例えば、変数$xに以下の連想配列を代入した場合は、

$x = array('apple' => 'りんご', 'banana' => 'バナナ');
var_dump($x);

var_dump()すると、

array(2) { ["apple"]=> string(9) "りんご" ["banana"]=> string(9) "バナナ" }

という感じで、画面に表示されます。

debug

「array(2)」というのが、2つの配列が変数に入っていることを意味しています。

そして、「string(9) “りんご”」というのは、りんごという文字列のバイト数を表してくれています。この時の文字コードはutf-8なので、全角文字は1文字で3バイトの計算ですから、りんご3文字で9バイトが表されていることが分かります。

 

また、if文の分岐などで、true か falseを調べたい場合にもvar_dump()は重宝します。

bool(true)
bool(false)

var_dump()で出力すると、上記のようにbool型の値が返ってくることが確認できます。

 

また、var_dump()の合わせ技として、exit;という命令もよく使います。
PHPのスクリプトをそこで終了させたい場合は、exit;を使いましょう。

$x = array('apple' => 'りんご', 'banana' => 'バナナ');
var_dump($x);
exit;

exit;を入れると、そこで処理が終了します。
画面を確認すると、処理が途中で終了しているのが分かります。


exit;を使うことで、テキストファイルの読み込みを途中で終了させることができるので、プログラムを書いている途中でデバッグしたい時なんかに便利ですね。

 

このように、var_dump()は詳しい情報を知りたい時に使うと便利な関数です。

また、そこまで詳しい情報がいらない時は、var_dump()以外の関数を使ってみましょう。

print_rとechoでスッキリ出力

「print_r()」と「echo」は「var_dump()」よりもスッキリとした出力を返してくれます。

 

同じように先ほどの連想配列をprint_rで表示させてみると、

Array ( [apple] => りんご [banana] => バナナ )

となり、var_dump()の時の、

array(2) { ["apple"]=> string(9) "りんご" ["banana"]=> string(9) "バナナ" }

と比べても、簡潔な表示に変わっています。

 

変数の型が不要な時は、「print_r()」関数の方を使う方が余計な情報がなく、見やすいですね。

 

また、「echo」は文字列を出力する命令です。

 

PHPの中でも、最も簡単な命令の一つですが、「print_r()」のように配列は出力できません。string型のみの出力なので気をつけましょう。

<pre>タグで囲むと見やすく出力される

デバッグの応用として、preタグで囲むとかなり見やすい出力になります。 例えば、出力した文字列が長い場合、preタグ無しだと改行がなく、かなり見にくいです。

上記のように、<pre>タグ無しだと、


となりよくわからない状態になります。

 

 

上記のように<pre>タグをつけてあげると、

 

となり、改行がいい感じに入るのでとても見やすくなり、多重配列になっていても分かりやすいです。

 

長い、配列やオブジェクトをデバッグする時は、<pre>タグをつけると良いですね。

 

ちなみに、<pre>タグをつけるのが面倒だという場合は、デベロッパーツールで確認すれば、改行ありで表示されるので、こちらで確認するのもありですね。

 

まとめ:デバッグ大事!

実は、僕がプログラミング学習を始めた頃は、エラー画面が出るとドキッとしてました。

 

英語で書かれている原因不明の見たこともない警告画面が出ると、最初はビビってしまいますよね。

 

でも、デバッグを使えば大抵のエラーは解決できるようになります。

正直デバッグの知識さえあれば、どのようにプログラムが動いているのか手に取るようにわかるので、エラーが出たとしても、全く動じなくなりました。

 

また、PHPに限らずどんな言語においてもデバッグの方法は単純なので、

いつも変数にどんな値が入っているのかを確認する癖をつけておけば、デバッグの技術はすぐに身につきます。

 

最初のうちは、どんな些細なことでもデバッグで調べて行くことが、プログラミング上達への近道だと最近になって強く思います。


スポンサーリンク
[adsense]