我知道函数debug_backtrace,但我正在寻找一些准备使用函数的实现,如GetCallingMethodName()?如果它也给出了方法的类(如果它确实是一个方法),那就太完美了。
当前回答
我所见过的这个问题的最佳答案是:
list(, $caller) = debug_backtrace(false);
简洁明了
其他回答
我最喜欢的方式,一句话!
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'];
}
debug_backtrace()函数是知道这一点的唯一方法,如果你很懒,这是你应该自己编写GetCallingMethodName()的另一个原因。战胜懒惰!: D
从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'];
推荐文章
- Visual Studio:如何打破处理异常?
- 阻止人们入侵基于php的Flash游戏高分表的最佳方法是什么
- 确保您的项目构建设置正在生成一个dSYM文件。对于所有配置,DEBUG_INFORMATION_FORMAT都应该设置为dwarf-with-dsym
- 如何获得GDB中所有线程的回溯?
- PHP子字符串提取。获取第一个'/'之前的字符串或整个字符串
- __construct函数的作用是什么?
- PHP中的异步shell执行器
- Laravel 5 -如何访问在视图存储上传的图像?
- 为什么在PHP中使用sprintf函数?
- “质量分配”在Laravel中是什么意思?
- 在逗号上爆炸字符串,并修剪每个值的潜在空格
- PHP与MySQL 8.0+错误:服务器请求身份验证方法未知的客户端
- laravel5“LIKE”对等物(雄辩的)
- 在函数中使用默认实参
- 转换php数组到Javascript