PHP调试助手

当调试PHP代码时,var_dump()、print_r()和debug_backtrace()是我们最常用的工具。Kint,一个开源软件,一个不需安装的替代者,它提供了更好的调试体验。它巧妙地检测几乎不可读的数据,并将它们定制成规则的输出显示。变量名、文件、行号及包装的函数它全能提示出来。

  • PHP 调试函数

    print_r()
    var_dump()
    debug_backtrace()
    

介绍给大家一个很好用的PHP DEBUG工具---Kint http://raveren.github.io/kint/ 在这个主页上你几乎能获取到所有关于它的信息了,我在这里只是对这个工具及其使用做个简要介绍。
它是一个无需安装的,易用的,强力的PHP调试助手,它能很好的替代var_dump(),print_r(),debug_backtrace()这些函数。
它设计的目的就是在调试时能将数据以最好的方式呈现给你。

  • 安装和使用

1. 需求:

需要PHP 5+(额外的功能需要5.3+),现代的浏览器。

2.下载和安装:

下载在Kint的主页,下载后将Kint目录按你的想法随意放置,接着只需要将 Kint.class.php 包含进来就可以开始了!

3.快速入门:

[php] view plain copy
  1. <?php  
  2. require "/kint/Kint.class.php";  
  3.   
  4.   
  5. Kint::dump( $_SERVER );  
  6. // 或许,可以试试更简单的,使用缩写:  
  7. d( $_SERVER );  
  8. // 或者,你可以用dd()在打印完之后直接结束程序;  
  9. dd( $_SERVER ); // 相当于 d( $_SERVER ); die;  
  10.   
  11.   
  12. // 跟踪调试信息:  
  13. Kint::trace();  
  14. // 这么写跟上面的效果相同  
  15. Kint::dump( 1 );  
  16.   
  17.   
  18. // 禁用所有输出  
  19. Kint::enabled(false);  
  20. // 之后这样的方法调用,都不会有输出了  
  21. d("Get off my lawn!"); // 没有效果  

4.配置

你可以将默认配置 config.default.php 重命名成 config.php,这样你自己的配置就会覆盖默认配置了。在配置文件中,每一项都有详细的说明。

5.进阶用法

> 文本输出
可以只输出文本信息,而不是像之前那样的格式化样式

  1. <?php  
  2. s( $variable );  
  3. // 还有  
  4. sd( $variable ); // 输出完直接退出,还记得上面的dd()吗  

实时修饰符

  1. <?php  
  2. +Kint::dump( $variable );  
  3. // 或者这么写  
  4. +d( $variable );  

可用的修饰符有:
> ● +Kint::dump(); 将会忽视嵌套层次限制

  • 当你输出一个特别负责的对象(比如说嵌套层次很深的数组时),你会收到一个 DEPTH TOO GREAT 的信息,用这个修饰> 符可以忽略掉这个限制;
  • 警告:可能引起浏览器异常
    ● -Kint::dump(); 将会清除在这之前的所有输出信息
  • 在页面顶端显示;
  • 当变量在HTML中时,使用这个会特别有用,与dd()一起使用也很有效果;
  • 在ob_clear() 和 ob_start() 环境中使用可能会失效;
    ● @Kint::dump(); 将会返回Kint::dump()的值,而不是打印结果,可以参考print_r(, true);
  • 可以用来记录日志;
    ● !Kint::dump();输出结果将会自动展开,你不用手动去点了。

6.Kint使用

<php?
//加载Kint
require("Kint.class.php");

//打印$_POST,在浏览器上显示的打印信息特别有条理,看起来特别舒服
//果断抛弃var_dump,echo......
Kint::dump($_POST);

//打印代码运行至此处的调用链,比debug_backtrace清晰多了
Kint::trace();

//特殊语法
//打印$_POST,默认在浏览器上展开所有输出
!Kint::dump($_POST);

//打印$_POST,清除调用之前的所有输出
-Kint::dump($_POST);

//打印$deepObject,如果参数比较复杂,建议使用该函数
+Kint::dump($deepObject);
文章导航