phpデバッガdebug_backtrace()
debug_backtrace()は控えめな関数で、注意したことがある人は少ない.しかし、あるオブジェクトに対して別のオブジェクトを呼び出し、他のオブジェクトとファイルの関数を呼び出すエラーが発生したとき、笑っていました.
debug_print_backtrace(), debug_backtrace()は前者が直接印刷されただけです.プログラム全体の呼び出しスタックを表示し、瞬間関数呼び出しスタックを表示し、エラーを検出しやすい.
もし私たちが誰に呼び出されたか知りたいなら?debug_backtraceは解決できます.debug_backtrace()は、ページの呼び出しプロセスを印刷することができ、どこからどこへ行くかが一目瞭然である.しかし、これはPHP 5の固有関数であり、pearではすでに実現されています.http://pear.php.net/package/P...
テストコード
出力結果:
debug_backtraceはメソッドとしてカプセル化され、出力クラス名とメソッド名のみが取得されます.
debug_print_backtrace(), debug_backtrace()は前者が直接印刷されただけです.プログラム全体の呼び出しスタックを表示し、瞬間関数呼び出しスタックを表示し、エラーを検出しやすい.
もし私たちが誰に呼び出されたか知りたいなら?debug_backtraceは解決できます.debug_backtrace()は、ページの呼び出しプロセスを印刷することができ、どこからどこへ行くかが一目瞭然である.しかし、これはPHP 5の固有関数であり、pearではすでに実現されています.http://pear.php.net/package/P...
テストコード
";
// print_r(debug_backtrace());
print_r(print_message_class());
}
}
class b
{
function say($msg)
{
$a = new a();
$a->say($msg);
}
}
class c
{
function __construct($msg)
{
$b = new b();
$b->say($msg);
}
}
$c = new c("test");
出力結果:
msg:test
a.say
debug_backtraceはメソッドとしてカプセル化され、出力クラス名とメソッド名のみが取得されます.
/**
*
*
* @return string
*/
function print_message_class()
{
$backtrace = debug_backtrace();
$class_name = $backtrace[1]['class'];
$func_name = $backtrace[1]['function'];
$message = "{$class_name}.{$func_name}() ";
return $message;
}