基本的なことですが、PHPのdebugについておさらいを。
一般的なデバッグツール
var_dump
非常に基礎ですが、一番よく使います。print_rを使う方もいるようですが、こちらのほうがわかりやすいかと。
画面に出すときに改行されていないため、ディフォルトではわかりにくいですが、
- ブラウザのツールでHTML要素をみる
- preタグで囲む
と改行されてみやすくなっています。
xdebug
関数ではありませんが、これを使うと、
- var_dumpが見やすく改行される
- エラー発生時にスタックトレースがでるため、発生個所を追うのが楽
- IDEを使うとステップ実行ができる
などのメリットがあります。※php.iniなどで設定をします。
フレームワークのdebugツール
フレームワークなどをつかっていると画面の下にデバッグツールがでます。最近まであまり活用してませんでしたが、使えるとめちゃめちゃ使えます。
通常の変数はだせないこともありますが、SQLのログやリクエスト、セッションなどの変数を見ることができるのが便利です。
なるべく調べて活用しましょう。
dd
laravelのみ。dd()という関数で、今までだとvar_dump(); exitの発展形みたいなものです。オブジェクト形式の複雑なデータのデバッグをわかりやすくしてくれます。一般化できないか調査中。
ログに出す
画面に影響がでないのがありがたいですね。
ちなみにディフォルトだと変数しか出力できず、配列やオブジェクトの中身を出せないので、これらを出す場合には、
- ob_startを使ったバッファリング出力
(参考リンク:http://skill-up-engineering.com/2017/05/23/post-2796/) - var_exportやprint_rの第二引数にtrueをセットして、ログファイルに渡す
(参考リンク:http://phpcopipe.com/post-71/)
などの方法があります。1は自力で考えたんですが、2のほうがお手軽でしょうね・・・結構長い間PHP使ってましたが、var_dumpの画面出力が多く、あまり有効活用してませんでした・・
他参考リンク
PHP開発時におけるデバッグ/プロファイリングの手段・ツール3+2選
そのほか、PHPのデバッグ情報をChromeに出すなどのこともできるようです。