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/

相关文章:

python - 这个python函数代码如何工作?

jQuery 在each() 和自定义函数方面遇到麻烦

function - 在 Dart 中将变量转换为函数/方法指针? (代表?)

Java:读取、编辑和创建文本文件

php - 如何在 Windows 上为 Cassandra 安装 Datastax-PHP 驱动程序?

php - Magento - 空白的白屏搜索结果。很多东西坏了

php - PHP中的套接字连接错误

javascript - 如何执行自定义 Dojo 模块的回调函数?

php/js - 如何在页面卸载时删除文件?

php - 当用户单击 single.php 页面中的下一篇/上一篇文章时,显示同一类别的文章