有没有办法在PHP中获取引用函数的名称?

Jos*_*zel 4 php function

我有一个通常在其他函数内部调用的函数,我希望能够自动找出引用函数的名称(如果有的话).

像这样的东西:

function do_something()
{
    do_something_else();
}

function do_something_else()
{
    echo referring_function(); // prints 'do_something'
}
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法来做到这一点?请注意,我知道可以通过将名称作为参数传递来手动完成,但我想知道是否有更简单的方法.此外,我不是在寻找__FUNCTION__常量,因为它返回调用它的函数的名称.我想要调用当前函数的函数的名称.

tim*_*dev 10

你可能会滥用debug_backtrace()这种方式.似乎应该有更好的方式......但我没有想到它.

你想要做到这一点似乎有点奇怪.如果您真的需要一个函数来知道谁在调用它,那么您可能遇到了设计问题.

但是,如果你确定要这样做,你可以像这样定义一个小的全局函数:

function callerId(){
    $trace = debug_backtrace();
    return $trace[2]['function'];
}
Run Code Online (Sandbox Code Playgroud)

这将始终返回调用调用它的函数的函数的名称.当然,除非callerId()从顶级脚本调用调用函数.

一个用法示例:

function callerId(){
    $trace = debug_backtrace();
    return $trace[2]['function'];
}

function do_something(){
    do_something_else();
}

function do_something_else(){
    $who_called = callerId();
}
Run Code Online (Sandbox Code Playgroud)