2012/04/05

Tag : ,

PHPでデバッグするときのもろもろについて調べてみた。。。。けど。。

PHPって苦手です。まだまだ変数など監視しながらやらないと、思わぬところでドハマリするのでメモることに。
初心者の私は基本的に、echoもしくはprint、たまにprint_rぐらいしか使いませんが、調べたのでとりあえずいろいろ書いておきます。

単純な出力の場合

echo "出力されます。";
print("出力されます。");

ほぼ同じ動作をします。echo の方がphp使ってる感が強いのでいつもそっち使ってます。

配列などの出力

$Array = array(
	"key1" => "value1",
	"key2" => "value2",
	"key3" => "value3"
);
print_r($Array);

配列や連想配列、オブジェクトの中身を出力したいときに使いますね。
第二引数に、「true」を入れてやると出力結果を変数に突っ込めるらしいですよ。

$output = print_r($Array,true);
補足:公開後のデバッグの確認

print_rはページに現れちゃいますので、公開後なんかは控えたいところですよね。そこで、ひとつ関数をかますことでコメントアウトした状態でソースにだけ表示してくれます。

/*
* 本番などでデバッグ表示したい時などに
* ソースをDEBUGで検索すれば見つけやすい
*/
function cprint_r($val){
    echo "<!-- [DEBUG START] ".print_r($val,true)." [DEBUG END]-->";
}

そして、

//print_r($Array); //ページにも表示する。
cprint_r($Array); //ソースにだけ表示。

私みたいなものには、たまにしか関係ない関数。

ここからは初心者にはあまり関係ない?ですが、たまに使うので書いておきます。理解してないこともとりあえず書いてしまいますのであまり信用しないように!

  • var_dump()
    構造と値だけでなく、型やサイズも表示します。オブジェクトの場合、クラス名を返してくれます。print_r()より詳しい感じですね。
  • debug_backtrace()
    呼び出し元のバックトレースを取得します。関数を遡ってその時の結果などをそれぞれ返してきますので、どこでどうなったとか知りたい時に必要ですね。あと出力するには、print_r()で。

    print_r(debug_backtrace());
    
  • get_included_files()
    include または require で読み込まれたファイルの名前を配列として返します。どういう順番でファイルが読み込まれているのか、ライブラリがロードされているかを確認できます。
  • get_defined_constants()
    すべての定数の名前とその値を連想配列として返します。

必要になるときがくるのでしょうかね。。。

参考にさせてもらったところ
PHPのデバッグに便利な関数 – 基本編
PHP: Hypertext Preprocessor

1 Coment

  1. ピンバック: プログラミング参考サイト | android manifest configChanges

Leave a Reply

Back to Top