PHP 全链路嵌套方法层级追踪之debug_backtrace() 函数

前言:在项目开发中,某个功能的实现可能连续嵌套调用的多个公共方法,这个时候想排查整个链路调用了什么方法?都在什么位置调用,我们该如何操作呢?

首先想到的可能时使用打印全局变量$_SERVER,但此函数只是打印出初始调用的方法名。其实PHP已经提供了对应的堆栈链路函数:debug_backtrace() 函数

debug_backtrace() 函数

函数定义:

debug_backtrace() 函数生成 backtrace。

该函数显示由 debug_backtrace() 函数代码生成的数据。

返回一个关联数组。下面是可能返回的元素:

名称类型描述
function string 当前的函数名。
line integer 当前的行号。
file string 当前的文件名。
class string 当前的类名。
object object 当前对象。
type string 当前的调用类型,可能的调用:
  • 返回:"->" - 方法调用
  • 返回:"::" - 静态方法调用
  • 返回 nothing - 函数调用
args array 如果在函数中,列出函数参数。如果在被引用的文件中,列出被引用的文件名。

 

函数用法:

#获取全链路链路调用中的方法和所在行数
$array
= debug_backtrace(); foreach ($array as $row) { $info[] = $row['file'] . ':' . $row['line'] . '行,调用方法:' . $row['function']; } var_dump( $info);

结果如图:

 

posted @ 2020-12-07 21:26  申文哲  阅读(571)  评论(0编辑  收藏  举报