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

ECCUBE3ディレクトリ構成

ECCUBE3のディレクトリ構造に関して。 自分用 自分用メモです。 設定情報 /app/config/eccube 定数 /src/Eccube/Common/Constant ログ /app/lo …

no image

PHPのオートローディング

大規模開発では扱うファイルが増えるため、必要なクラスの読み込みが煩雑になるケースが多いです。 Contents1 従来のPHPのファイルのロード2 オートローディングとは3 サンプルソース4 メモ5 …

no image

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

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

no image

PHPでの空白削除に関して

PHPで空白を削除する方法についてメモします。 trimについて 空白を削除する関数といえばtrimが何といっても一番有名でしょう。

no image

cakeでのJOINについて&session

Contents1 cakeでのJOIN2 cakeでのsessionについて cakeでのJOIN cakePHPでは基本、hasManyなどの修飾子を使えば、リレーションをとることができますが、検 …