当前位置:Gxlcms > PHP教程 > PHP怎么打印调用堆栈

PHP怎么打印调用堆栈

时间:2021-07-01 10:21:17 帮助过:29人阅读

在给定的PHP代码中,child_func()函数调用parent_func()函数,该函数进一步调用grandparent_func()函数,从而生成调用堆栈。

推荐学习:《PHP教程》

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

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

例:

  1. <?php
  2. // 用于打印PHP调用堆栈的PHP程序
  3. //调用函数parent_func
  4. function child_func() {
  5. parent_func();
  6. }
  7. // 调用grandparent_func函数
  8. function parent_func() {
  9. grandparent_func();
  10. }
  11. // 函数的作用是:打印调用堆栈
  12. function grandparent_func() {
  13. debug_print_backtrace();
  14. }
  15. //主函数调用
  16. child_func();
  17. ?>

输出:

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

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

例:

  1. <?php
  2. // 用于打印PHP调用堆栈的PHP程序
  3. //函数调用parent_func
  4. function child_func() {
  5. parent_func();
  6. }
  7. // 函数调用grandparent_func
  8. function parent_func() {
  9. grandparent_func();
  10. }
  11. // 函数的作用是:打印调用堆栈
  12. function grandparent_func() {
  13. var_dump(debug_backtrace());
  14. }
  15. // 主函数调用
  16. child_func();
  17. ?>

输出:

  1. array(3) {
  2. [0]=>
  3. array(4) {
  4. ["file"]=>
  5. string(42) "/home/2b81f040639170c49a6a58adb23d5154.php"
  6. ["line"]=>
  7. int(12)
  8. ["function"]=>
  9. string(16) "grandparent_func"
  10. ["args"]=>
  11. array(0) {
  12. }
  13. }
  14. [1]=>
  15. array(4) {
  16. ["file"]=>
  17. string(42) "/home/2b81f040639170c49a6a58adb23d5154.php"
  18. ["line"]=>
  19. int(7)
  20. ["function"]=>
  21. string(11) "parent_func"
  22. ["args"]=>
  23. array(0) {
  24. }
  25. }
  26. [2]=>
  27. array(4) {
  28. ["file"]=>
  29. string(42) "/home/2b81f040639170c49a6a58adb23d5154.php"
  30. ["line"]=>
  31. int(21)
  32. ["function"]=>
  33. string(10) "child_func"
  34. ["args"]=>
  35. array(0) {
  36. }
  37. }
  38. }

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

例:

  1. <?php
  2. // 用于打印PHP调用堆栈的PHP程序
  3. //函数调用parent_func
  4. function child_func() {
  5. parent_func();
  6. }
  7. // 函数调用grandparent_func
  8. function parent_func() {
  9. grandparent_func();
  10. }
  11. // 函数的作用是:打印调用堆栈
  12. function grandparent_func() {
  13. $e = new Exception;
  14. var_dump($e->getTraceAsString());
  15. }
  16. // 主函数调用
  17. child_func();
  18. ?>

输出:

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

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

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

人气教程排行