当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


PHP debug_backtrace()用法及代码示例


debug_backtrace()函数是PHP中的一个内置函数,一般供程序员调试使用。 debug_backtrace() 函数的主要工作是生成 PHP 回溯,即检查堆栈跟踪。它返回一个回溯 PHP 代码的关联数组的数组。此函数所有可能返回的元素是 -

Name

Type

Description

functionstring正在调用 debug_backtrace() 函数的函数的名称。
lineinteger函数调用的当前行号。
filestring已调用 debug_backtrace() 函数的文件的名称。
classstring调用 debug_backtrace() 函数的类的名称。
objectobject已用于调用存在 debug_backtrace() 函数的成员函数的对象的名称。
typestring当前调用的类型。如果当前调用类型是方法调用,则返回 “->”。如果是静态方法调用,则返回 “::”,如果是函数调用,则不返回任何内容。
argsarray函数定义中存在的参数列表。如果在文件中使用了 debug_backtrace() 函数,则返回其中包含的所有文件。

用法:

array debug_backtrace(int $options, int $limit);

这里,参数 $options 和 $limit 都是可选的并且是整数类型。 $option 参数用于位掩码,$limit 可用于设置限制要打印的堆栈帧的数量。 $limit 的默认值设置为零。

例:在此示例中,我们创建了一个返回两个输入参数之和的函数,并且在其中使用了 debug_backtrace() 函数。在首先打印输出时,将显示输入参数的总和,然后将打印代码的回溯。



PHP


<?php
    
function sum($a, $b) {
    echo $a + $b . "\n\n";
      
    var_dump(debug_backtrace());
}
  
sum(10,2);
  
?>
输出
12

array(1) {
  [0]=>
  array(4) {
    ["file"]=>
    string(42) "/home/2228b7c9e401174a5f773007cd840e32.php"
    ["line"]=>
    int(9)
    ["function"]=>
    string(3) "sum"
    ["args"]=>
    array(2) {
      [0]=>
      int(10)
      [1]=>
      int(2)
    }
  }
}

范例2:在这个例子中,debug_backtrace() 函数的概念已经在类中实现了,同时还有递归的概念来检查它的回溯。在此示例中,已创建了两个类,即 BaseClass 和 DerivedClass 以及它们的构造函数,并在 BaseClass debug_backtrace() 的构造函数中被调用。生成的输出,即此代码的回溯,相应地包含上表中提到的所有元素。

PHP


<?php
  
class BaseClass {
    public function __construct() {
        $this->_child = new DerivedClass($this);
        var_dump(debug_backtrace());
    }
}
  
class DerivedClass {
    public function __construct(BaseClass $d) {
        $this->_parent = $d;
    }
}
  
$obj = new BaseClass();
?>
输出
array(1) {
  [0]=>
  array(7) {
    ["file"]=>
    string(42) "/home/ecdb752d3b6ec8ba97e6db84c42a5f2f.php"
    ["line"]=>
    int(18)
    ["function"]=>
    string(11) "__construct"
    ["class"]=>
    string(9) "BaseClass"
    ["object"]=>
    object(BaseClass)#1 (1) {
      ["_child"]=>
      object(DerivedClass)#2 (1) {
        ["_parent"]=>
        *RECURSION*
      }
    }
    ["type"]=>
    string(2) "->"
    ["args"]=>
    array(0) {
    }
  }
}

参考: https://www.php.net/manual/en/function.debug-backtrace.php




相关用法


注:本文由纯净天空筛选整理自talktoosaurabh大神的英文原创作品 PHP debug_backtrace() Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。