我有一个经常在其他函数内部调用的函数,我希望能够自动找出引用函数的名称(如果有)。
像这样:
function do_something()
{
do_something_else();
}
function do_something_else()
{
echo referring_function(); // prints 'do_something'
}
有什么简单的方法可以做到这一点吗?请注意,我知道可以通过将名称作为参数传递来手动完成,但我想知道是否有更简单的方法。另外,我不是在寻找 __FUNCTION__
常量,因为它返回调用它的函数的名称。我想要调用当前函数的函数的名称。
最佳答案
你可以滥用 debug_backtrace()
来做这件事。似乎应该有更好的方法......但我没有想到。
您想这样做似乎有点奇怪。如果您真的需要一个函数来知道谁在调用它,那么您可能遇到了设计问题。
但是,如果您确定要这样做,您可以像这样定义一个小的全局函数:
function callerId(){
$trace = debug_backtrace();
return $trace[2]['function'];
}
那将始终返回调用它的函数的函数的名称。当然,除非调用 callerId()
的函数是从顶级脚本中调用的。
所以,一个用法示例:
function callerId(){
$trace = debug_backtrace();
return $trace[2]['function'];
}
function do_something(){
do_something_else();
}
function do_something_else(){
$who_called = callerId();
}
关于php - 有没有办法在 PHP 中获取引用函数的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1424889/