我知道
PHP中的__FILE__魔术常数将变成当前执行文件的完整路径和文件名.但是有没有办法可以获得与函数调用文件相同的信息?例如:
//foo.PHP: include "bar.PHP"; call_it(); //bar.PHP function call_it() { echo "Calling file: ".__CALLING_FILE__; }
我知道没有__CALLING_FILE__魔术常数,或一个魔术常数来处理这个,但是有没有办法可以得到这些信息?最小的黑客解决方案将是理想的(例如,使用堆栈跟踪将是相当黑客),但最终我只需要它工作.
你应该看看堆栈跟踪做这些事情. PHP有一个名为
debug_backtrace
的函数
include "bar.PHP"; call_it(); //bar.PHP function call_it() { $bt = debug_backtrace(); echo "Calling file: ". $bt[0]['file'] . ' line '. $bt[0]['line']; }
希望它有帮助
同样的原则,你可以发现debug_print_backtrace
有用,它做同样的事情,但PHP自己处理所有信息的形成和打印.