欢迎加入QQ讨论群258996829
麦子学院 头像
苹果6袋
6
麦子学院

Php调试学习之回溯跟踪

发布时间:2017-04-25 17:20  回复:0  查看:1872   最后回复:2017-04-25 17:20  

本文和大家分享的主要是php开发中,调试的回溯跟踪相关内容,一起来看看吧,希望对大家学习和使用这部分内容有所帮助。

  前言

  在我们调试程序过程中,往往可能会出现需要回溯跟踪一个方法,这里我就介绍两个比较不错的PHP函数,也是我经常使用的。

  内容

  (PHP 4 >= 4.3.0, PHP 5, PHP 7)

  debug_backtrace — 产生一条回溯跟踪(backtrace)

  (PHP 5, PHP 7)

  debug_print_backtrace — 打印一条回溯。

  这两个看起来有点相似,其实功能也是差不多的,下面我就以一个简单的例子向大家演示下他们的使用。

  实例

  <?php/**

  * PHP回溯

  @author chenyanphp@qq.com

  */

  header("Content-Type:text/html;charset=utf-8");

  /**

  *

  调试函数

  @param $content

  */function dump($content){

  echo '

';

 

  var_dump($content);

  echo '';

  }

  /**

  * Class A

  */class A{

  public function say()

  {

  // 这里打印回溯内容

  dump(debug_backtrace());

  // 调用本身方法打印

  debug_print_backtrace();

  echo '
';

  echo 'Hello World!';

  }

  }

  /**

  * Class B

  */class B{

  public function sayB(A $obj)

  {

  $obj->say();

  }

  }

  /**

  测试结果

  */

  $a = new A();

  $b = new B();

  $b->sayB($a);

  下面是运行结果:

  array(2) {

  [0]=>

  array(7) {

  ["file"]=>

  string(29) "D:\phpStudy\WWW\test\test.php"

  ["line"]=>

  int(43)

  ["function"]=>

  string(3) "say"

  ["class"]=>

  string(1) "A"

  ["object"]=>

  object(A)#1 (0) {

  }

  ["type"]=>

  string(2) "->"

  ["args"]=>

  array(0) {

  }

  }

  [1]=>

  array(7) {

  ["file"]=>

  string(29) "D:\phpStudy\WWW\test\test.php"

  ["line"]=>

  int(52)

  ["function"]=>

  string(4) "sayB"

  ["class"]=>

  string(1) "B"

  ["object"]=>

  object(B)#2 (0) {

  }

  ["type"]=>

  string(2) "->"

  ["args"]=>

  array(1) {

  [0]=>

  object(A)#1 (0) {

  }

  }

  }

  }

  #0 A->say() called at [D:\phpStudy\WWW\test\test.php:43] #1 B->sayB(A Object ()) called at [D:\phpStudy\WWW\test\test.php:52] Hello World!

  结合代码不难看出,他们着重返回结果集,拆分结构;另一个着重按调用顺序打印出回溯跟踪。

  总结

  内容就这么多,结果一目了然,其他自己测试下就明了了。

  PHP有些方法还是挺不错的,大家平时可以多看看手册。

  下面放了他们两的官方链接,有兴趣的可以点击详细看看。

 

 

来源:SegmentFault

您还未登录,请先登录

热门帖子

最新帖子