我有一个通常在其他函数内部调用的函数,我希望能够自动找出引用函数的名称(如果有的话).
像这样的东西:
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)