我知道函数debug_backtrace,但我正在寻找一些准备使用函数的实现,如GetCallingMethodName()?如果它也给出了方法的类(如果它确实是一个方法),那就太完美了。
当前回答
最简单的方法是:
echo debug_backtrace()[1]['function'];
正如下面的评论所指出的,可以通过将参数传递给:
省略object和args索引 限制返回的堆栈帧数
echo debug_backtrace(!DEBUG_BACKTRACE_PROVIDE_OBJECT|DEBUG_BACKTRACE_IGNORE_ARGS,2)[1]['function'];
其他回答
我需要一些东西来列出调用类/方法(在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'];
我最喜欢的方式,一句话!
debug_backtrace()[1]['function'];
你可以这样使用它:
echo 'The calling function: ' . debug_backtrace()[1]['function'];
注意,这只与去年发布的PHP版本兼容。但出于安全考虑,让PHP保持最新是一个好主意。
从php 5.4开始就可以使用
$dbt=debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS,2);
$caller = isset($dbt[1]['function']) ? $dbt[1]['function'] : null;
这不会浪费内存,因为它忽略参数,只返回最后2个回溯堆栈条目,并且不会像这里的其他答案一样生成通知。
获取父函数名最简单的方法是:
$caller = next(debug_backtrace())['function'];
推荐文章
- 在PHP单元测试执行期间,如何在CLI中输出?
- 在PHP中使用heredoc的优势是什么?
- PHP中的echo, print和print_r有什么区别?
- 如何将XML转换成PHP数组?
- 如何将对象转换为数组?
- 从IP地址获取位置
- 获取数组值的键名
- HTTPS和SSL3_GET_SERVER_CERTIFICATE:证书验证失败,CA is OK
- PHP -获取bool值,当为false时返回false
- 在foreach中通过引用传递
- 如何触发命令行PHP脚本的XDebug分析器?
- 如何找出如果你使用HTTPS没有$_SERVER['HTTPS']
- 如何在Visual Studio中找到堆栈跟踪?
- 有一个好的Valgrind Windows的替代品吗?
- 更好的方法检查变量为null或空字符串?