PHPのデバッグによく使う関数

配列を扱える関数と扱えない関数

まず大きく2つに分類すると、printとechoは配列を扱えませんが、var_dump()とprint_r()は配列も表示できます。以下、printとechoの違いについてとvar_dump()とprint_r()の違いについてを順に説明していきます。

printとechoの違い

「echoの特徴」で記載している内容ぐらいしか違わず、ほとんど同じです。

echoの特徴

  • ①カンマ区切りで連結で連結できます。
  • ②少しだけ処理速度がprintより早いです。(大規模なサイトでない限り、無視していいほどの差です。)
他の言語を学んでいく上で脳を混乱させないように、自分でPHPのコードを書くときはechoによる「カンマ区切り(,)」の文字列を連結させる書き方は使用しない方がいいです。PHPは「ピリオド区切り(.)」で文字列を連結させるとだけ覚えておきましょう。

printとechoの使い方

ダブルクォート「”」で囲まれていた場合は、ダブルクォート内で変数やエスケープシーケンスも利用できます。 なお、変数を使うときのパターンは2パターンあります。

①変数の後に半角スペースを挿入する。 {}を使う。この場合は半角スペースは必要ありません。
シングルクゥート「’」の場合は、シングルクゥートで囲まれている中で変数や一部を除いたエスケープシーケンスを利用することはできません。

ヒアドキュメント構文(ダブルクォート)

複数行に渡る長い文章を取り扱う時に便利な構文です。先ほどと同じで、ダブルクォートで「”EOD”」としている場合は、変数やエスケープシーケンスを利用できます。

Nowdoc構文(シングルクゥート)

下記の場合は、変数はそのまま出力され、「日本の首都は{$tokyo} です。関西の首都は{$osaka} です。」と表示されてしまいます。

var_dump()とprint_r()の違い

print_r()は、「null」と「boolean」が表示できませんが、var_dumpは問題なく表示できます。 よって、基本的には「var_dump()」を使った方がいいでしょう。

preを使おう!

var_dumpをそのまま使うと、出力内容が改行されないため非常に見難くなります。以下のようにpreタグで囲むと改行され見易くなります。

エラー表示

php.iniの設定

通常はdisplay_errorsを「off」にすることで、エラーが表示されないようにしています。

フィルごとにエラー表示したい場合

php.iniでdisplay_errorをoffに設定していても、phpファイルに以下のように記述すれば、エラーが表示されます。