我知道函数debug_backtrace,但我正在寻找一些准备使用函数的实现,如GetCallingMethodName()?如果它也给出了方法的类(如果它确实是一个方法),那就太完美了。


当前回答

我最喜欢的方式,一句话!

debug_backtrace()[1]['function'];

你可以这样使用它:

echo 'The calling function: ' . debug_backtrace()[1]['function'];

注意,这只与去年发布的PHP版本兼容。但出于安全考虑,让PHP保持最新是一个好主意。

其他回答

我需要一些东西来列出调用类/方法(在Magento项目上工作)。

虽然debug_backtrace提供了大量有用的信息,但它为Magento安装提供的信息量是压倒性的(超过82,000行!)因为我只关心调用函数和类,所以我想出了这个小解决方案:

$callers = debug_backtrace();
foreach( $callers as $call ) {
    echo "<br>" . $call['class'] . '->' . $call['function'];
}

最简单的方法是:

echo debug_backtrace()[1]['function'];

正如下面的评论所指出的,可以通过将参数传递给:

省略object和args索引 限制返回的堆栈帧数

echo debug_backtrace(!DEBUG_BACKTRACE_PROVIDE_OBJECT|DEBUG_BACKTRACE_IGNORE_ARGS,2)[1]['function'];

获取父函数名最简单的方法是:

$caller = next(debug_backtrace())['function'];

从php 5.4开始就可以使用

        $dbt=debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS,2);
        $caller = isset($dbt[1]['function']) ? $dbt[1]['function'] : null;

这不会浪费内存,因为它忽略参数,只返回最后2个回溯堆栈条目,并且不会像这里的其他答案一样生成通知。

我最喜欢的方式,一句话!

debug_backtrace()[1]['function'];

你可以这样使用它:

echo 'The calling function: ' . debug_backtrace()[1]['function'];

注意,这只与去年发布的PHP版本兼容。但出于安全考虑,让PHP保持最新是一个好主意。