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

标签 php function

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

像这样:

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/

相关文章:

c++ - 类和类中的指针

php - Mysql查询,item包含所有指定的标签

php - 如何以降序重新排序整个sql语句?

php - 我怎样才能更好地理解 php 中 symfony2 中的服务层

php - 为什么这个 POST 变量通过 AJAX Null 发送? (jquery/php)

javascript - 循环数组中的值

php - codeigniter/php 应用程序中错误处理的最佳实践

c# - 请定义一个堆栈溢出异常— C#

php - 帮助 PHP call_user_func 并将函数集成到类中?

r - 在函数环境中更改 options() 而不更改 R 全局环境中的 options()?