• 技术文章 >后端开发 >php教程

    PHP怎么打印调用堆栈

    藏色散人藏色散人2019-01-24 13:45:39原创4376
    在给定的PHP代码中,child_func()函数调用parent_func()函数,该函数进一步调用grandparent_func()函数,从而生成调用堆栈。

    推荐学习:《PHP教程

    PHP打印调用堆栈的三种方法如下:

    方法1:使用debug_print_backtrace()函数打印调用堆栈。

    例:

    <?php 
    // 用于打印PHP调用堆栈的PHP程序
    //调用函数parent_func
    function child_func() { 
        parent_func(); 
    } 
      
    // 调用grandparent_func函数
    function parent_func() { 
        grandparent_func(); 
    } 
      
    // 函数的作用是:打印调用堆栈
    function grandparent_func() { 
        debug_print_backtrace(); 
    } 
      
    //主函数调用 
    child_func(); 
      
    ?>

    输出:

    #0  grandparent_func() called at [/home/905a3b4d90f10b30521fedcb56c99fba.php:12]
    #1  parent_func() called at [/home/905a3b4d90f10b30521fedcb56c99fba.php:7]
    #2  child_func() called at [/home/905a3b4d90f10b30521fedcb56c99fba.php:21]

    方法2:使用debug_backtrace()函数打印调用堆栈。

    例:

    <?php 
    // 用于打印PHP调用堆栈的PHP程序
    //函数调用parent_func
    function child_func() { 
        parent_func(); 
    } 
      
    // 函数调用grandparent_func
    function parent_func() { 
        grandparent_func(); 
    } 
      
    // 函数的作用是:打印调用堆栈
    function grandparent_func() { 
        var_dump(debug_backtrace()); 
    } 
      
    // 主函数调用 
    child_func(); 
      
    ?>

    输出:

    array(3) {
      [0]=>
      array(4) {
        ["file"]=>
        string(42) "/home/2b81f040639170c49a6a58adb23d5154.php"
        ["line"]=>
        int(12)
        ["function"]=>
        string(16) "grandparent_func"
        ["args"]=>
        array(0) {
        }
      }
      [1]=>
      array(4) {
        ["file"]=>
        string(42) "/home/2b81f040639170c49a6a58adb23d5154.php"
        ["line"]=>
        int(7)
        ["function"]=>
        string(11) "parent_func"
        ["args"]=>
        array(0) {
        }
      }
      [2]=>
      array(4) {
        ["file"]=>
        string(42) "/home/2b81f040639170c49a6a58adb23d5154.php"
        ["line"]=>
        int(21)
        ["function"]=>
        string(10) "child_func"
        ["args"]=>
        array(0) {
        }
      }
    }

    方法3: Exception类的getTraceAsString()成员函数返回一个调用堆栈。

    例:

    <?php 
    // 用于打印PHP调用堆栈的PHP程序
    //函数调用parent_func
    function child_func() { 
        parent_func(); 
    } 
      
    // 函数调用grandparent_func
    function parent_func() { 
        grandparent_func(); 
    } 
      
    // 函数的作用是:打印调用堆栈
    function grandparent_func() { 
        $e = new Exception; 
        var_dump($e->getTraceAsString()); 
    } 
      
    // 主函数调用
    child_func(); 
      
    ?>

    输出:

    string(207) "#0 /home/8d8303d43667a4915d43dab7d63de26d.php(12): grandparent_func()
    #1 /home/8d8303d43667a4915d43dab7d63de26d.php(7): parent_func()
    #2 /home/8d8303d43667a4915d43dab7d63de26d.php(22): child_func()
    #3 {main}"

    本篇文章就是关于PHP怎么打印调用堆栈的三种方法介绍,希望对需要的朋友有所帮助!

    以上就是PHP怎么打印调用堆栈的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:打印PHP调用堆栈
    上一篇:如何在PHP中使用命名空间 下一篇:PHP如何将图像转换为base64编码格式
    PHP编程就业班

    相关文章推荐

    • JavaScript调用堆栈及setTimeout使用方法深入剖析_javascript技巧• PHP 打印调用堆栈信息• PHP打印调用堆栈信息,用于程序调试• Python如何记录调用堆栈日志实现方法?

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网