特定のメソッドを誰が呼び出したかを知りたい場合は、debug_print_backtrace で解決できます
debug_print_backtrace() は、ページの呼び出しプロセスを出力でき、それがどこから来たのかは明らかです
しかし、幸いなことに、これは PHP5 独自の関数です。 pearには既に実装があります
http://pear.php.net/package/PHP_Compat
テストコード
<?php class a{ function say($msg) { echo "msg:".$msg; echo "<pre class="brush:php;toolbar:false">";debug_print_backtrace(); } } 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 #0 a->say(test) called at [/var/www/test/test0723.php:12] #1 b->say(test) called at [/var/www/test/test0723.php:19] #2 c->__construct(test) called at [/var/www/test/test0723.php:23]
上記はPHPデバッグツールdebug_print_backtrace()の内容です。さらに関連情報については、PHP 中国語 Web サイト (www.php.cn) をフォローしてください。