ど素人から毛を生やす。<延>

PHPで関数がどこから実行されたか探る

Web > PHP 2017年6月13日(最終更新:7日前)

どもです。
昨日に引き続き、デバックするのに便利そうなPHPの小技。

頻繁にひっぱりだこな関数だと、
どこから呼び出されたのかソースから探るのは難しい。

ので、関数がどこから実行されたか探るコマンド。

$debug_backtrace_ = debug_backtrace();
foreach ($debug_backtrace_ as $debug_backtrace_one){
	print_r($debug_backtrace_one["file"]." : ".$debug_backtrace_one["line"]."<br>");
}

関数名もあった方が便利かもしれない。お好みで。

$debug_backtrace_ = debug_backtrace();
foreach ($debug_backtrace_ as $debug_backtrace_one){
	print_r($debug_backtrace_one["file"].".".$debug_backtrace_one["function"]." : ".$debug_backtrace_one["line"]."<br>");
}

debug_backtrace()というのが今回のミソ。
関数がどこから実行されたか、最後から順に辿って配列に納めていく関数です。

ただ、単にdebug_backtrace()を出力するだけでは
ソース次第ではもう大量のデータが書き出されてブラウザが止まりかねないし見辛い。

ので、いちど配列に格納して、ファイル名["file"]と行数["line"]のみ出力。

ちなみに全データ出力ならvar_dump(debug_backtrace())で良いですが、
確実に見辛いのでちょっと整形してみました。

$debug_backtrace_ = debug_backtrace();
foreach ($debug_backtrace_ as $debug_backtrace_one){
	print_r(
		"関数名:".$debug_backtrace_one["function"]."<br>".
		"行番号:".$debug_backtrace_one["line"]."<br>".
		"ファイル名:".$debug_backtrace_one["file"]."<br>".
		"クラス:".$debug_backtrace_one["class"]."<br>".
		"オブジェクト:".$debug_backtrace_one["object"]."<br>".
		"コール方式:".$debug_backtrace_one["type"]."<br>".
		"関数の引数のリスト:".$debug_backtrace_one["args"]."<br>".
		"************************************************************<br>"
	);
}

参考サイト
お名前.com、さくらのVPS等のサーバーでの開発・設定メモ
php.net

この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった  (0)
  • (・∀・) 参考になった (0)
  • (`・ω・´) 役に立った (0)