当调试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);