skillup

技術ブログ

PHP

PHPでのデバッグ

投稿日:2017年11月16日 更新日:

基本的なことですが、PHPのdebugについておさらいを。

一般的なデバッグツール

var_dump

非常に基礎ですが、一番よく使います。print_rを使う方もいるようですが、こちらのほうがわかりやすいかと。

画面に出すときに改行されていないため、ディフォルトではわかりにくいですが、

  1. ブラウザのツールでHTML要素をみる
  2. preタグで囲む

と改行されてみやすくなっています。

xdebug

関数ではありませんが、これを使うと、

  1. var_dumpが見やすく改行される
  2. エラー発生時にスタックトレースがでるため、発生個所を追うのが楽
  3. IDEを使うとステップ実行ができる

などのメリットがあります。※php.iniなどで設定をします。

PHPのデバッグ用拡張モジュール「Xdebug」の導入方法と使い方

フレームワークのdebugツール

フレームワークなどをつかっていると画面の下にデバッグツールがでます。最近まであまり活用してませんでしたが、使えるとめちゃめちゃ使えます。

通常の変数はだせないこともありますが、SQLのログやリクエスト、セッションなどの変数を見ることができるのが便利です。

なるべく調べて活用しましょう。

dd

laravelのみ。dd()という関数で、今までだとvar_dump(); exitの発展形みたいなものです。オブジェクト形式の複雑なデータのデバッグをわかりやすくしてくれます。一般化できないか調査中。

ログに出す

画面に影響がでないのがありがたいですね。

ちなみにディフォルトだと変数しか出力できず、配列やオブジェクトの中身を出せないので、これらを出す場合には、

  1. ob_startを使ったバッファリング出力
    (参考リンク:http://skill-up-engineering.com/2017/05/23/post-2796/)
  2. var_exportやprint_rの第二引数にtrueをセットして、ログファイルに渡す
    (参考リンク:http://phpcopipe.com/post-71/)

などの方法があります。1は自力で考えたんですが、2のほうがお手軽でしょうね・・・結構長い間PHP使ってましたが、var_dumpの画面出力が多く、あまり有効活用してませんでした・・

他参考リンク

PHP開発時におけるデバッグ/プロファイリングの手段・ツール3+2選

そのほか、PHPのデバッグ情報をChromeに出すなどのこともできるようです。

-PHP
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

jQuery modalダイアログについて&重複時間処理

Contents1 jqueryモーダルダイアログ1.1 あらかじめ読み込むライブラリ1.2 ソース本体1.2.1 Html側1.2.2 Javascript側1.2.3 参考リンク2 重複時間につい …

no image

cakePHPでのバッチスクリプト

cakeでバッチのプログラムを書く機会があったのでメモします。 まあ、バッチだったらcakeでなくてもいいのですが、やはりcakeのModelをいろいろと使えると便利ですので・・ まずファイルパスです …

no image

laravelでの名前空間変更

laravelでの名前空間変更について。 laravelでモデルの場所はディフォルトだとapp/直下に作られます。 これをapp/Modelというディレクトリを作ってnamespaceを正常に定義した …

no image

xdebugに関して

PHPでお手軽にできるdebugツールとしてxdebugを。 Contents1 利点2 インストール3 参考リンク 利点 var_dumpの結果が非常に見やすい(単純ですがこれが一番大きい理由です。 …

no image

form以外でのPOST送信(というかHTTP通信全般)

前回の記事に引き続きですが、APIを叩く側はformでデータを送るのではなく、コードの中にPOSTする処理を書きます。 選択肢としては curlコマンドを使う file_get_contentsを使う …

アーカイブ