//产生一条PHP的回溯跟踪,返回当前函数名(function)、当前行号(line)、当前的文件名(file)、当前class的名称(class)、当前的object(object)、当前调用的类型(type:方法,静态,函数)、参数(args);使用$limit限制返回堆栈帧的数量
$options = [
DEBUG_BACKTRACE_PROVIDE_OBJECT, // 是否填充"object"的索引。
DEBUG_BACKTRACE_IGNORE_ARGS, // 是否忽略"args"的索引,包括所有的function/method的参数,能够节省内存开销。
];
debug_backtrace($option = DEBUG_BACKTRACE_PROVIDE_OBJECT, $limit = 0);
// 打印了一条PHP回溯,包括函数调用、被included/required的文件和eval()的代码
debug_print_backtrace();
// 获取最后一个发生的错误,错误为以"type"、"message"、"file"和"line"为数组键(内置函数还会有以函数名为键)的关联数组
error_get_last();
debug_backtrace示例
class A
{
public function abc($a)
{
var_dump(debug_backtrace());
}
}
class B
{
public function abc()
{
(new A)->abc(1253);
}
}
(new B)->abc();
/*
array(2) {
[0] => // 当前方法的堆栈信息
array(7) {
'file' => string(36) "C:\Users\Administrator\Desktop\1.php"
'line' => int(84)
'function' => string(3) "abc"
'class' => string(1) "A"
'object' => class A#2 (0) {} // 指定$option为DEBUG_BACKTRACE_IGNORE_ARGS时,不会显示
'type' => string(2) "->"
'args' => // 指定$option为DEBUG_BACKTRACE_IGNORE_ARGS时,不会显示
array(1) {
[0] =>
int(1253)
}
}
[1] => // 调用者的堆栈信息
array(7) {
'file' => string(36) "C:\Users\Administrator\Desktop\1.php"
'line' => int(89)
'function' => string(3) "abc"
'class' => string(1) "B"
'object' => class B#1 (0) {}
'type' => string(2) "->"
'args' =>
array(0) {
}
}
}*/
debug_print_backtrace示例
class A
{
public function abc($a)
{
debug_print_backtrace();
}
}
class B
{
public function abc()
{
(new A)->abc(1253);
}
}
/*
#0 A->abc(1253) called at [C:\Users\Administrator\Desktop\1.php:84]
#1 B->abc() called at [C:\Users\Administrator\Desktop\1.php:89]
*/