Kint 调试工具 PHP 开发人员的调试助手
KINT 是一个免费开源,不用安装的 PHP 调试工具,用来替代系统内置的比如 var_dump()、print_r()、debug_backtrace() 等相关函数。
前言
当调试 PHP 代码时,var_dump()、print_r() 和 debug_backtrace() 是我们最常用的工具。Kint,一个开源软件,一个不需安装的替代者,它提供了更好的调试体验。它巧妙地检测几乎不可读的数据,并将它们定制成规则的输出显示。变量名、文件、行号及包装的函数它全能提示出来。
我在看什么?
乍一看,Kint 只是 var_dump()、print_r() 和 debug_backtrace() 的一个很好的替代品,然而,它远不止于此。你最终会想知道没有它你是如何发展的。
安装
Kint 的主要目标之一是 零设置。
下载文件 并简单地使用:
<?php require 'kint.phar';
或者使用 Composer 安装:
composer require kint-php/kint --dev
使用方法
<?php Kint::dump($GLOBALS, $_SERVER); // pass any number of parameters d($GLOBALS, $_SERVER); // or simply use d() as a shorthand Kint::trace(); // Debug backtrace d(1); // Debug backtrace shorthand s($GLOBALS); // Basic output mode ~d($GLOBALS); // Text only output mode Kint::$enabled_mode = false; // Disable kint d('Get off my lawn!'); // Debugs no longer have any effect
提示与技巧
- 默认情况下启用 Kint,设置
Kint::$enabled_mode = false;
为完全关闭。
最佳实践是仅在开发环境中启用 Kint - 因此即使您不小心在生产中留下转储,也没有人会知道。 - 看到输出右侧的按钮了吗?单击它们可打开新选项卡、显示值的访问路径或显示搜索框。
- 要查看在页面底部调用 Kint 而不是停靠工具栏的输出,请
Kint\Renderer\RichRenderer::$folder = false;
在包含 Kint 后立即添加该行。 - 您可以使用几个实时修改器:
~d($var)
此调用将以纯文本格式输出。+d($var)
将忽略深度级别限制并输出所有内容。
小心,这会使您的浏览器挂在大物体上!!d($var)
将自动扩展输出。-d($var)
将尝试上ob_clean
一个输出并在打印后刷新。- 您也可以组合修饰符:
~+d($var)
- 双击+标志将打开/关闭它及其所有子项。
- 三次单击+登录将打开/关闭页面上的所有内容。
- 将重分类添加到黑名单以提高性能:
Kint\Parser\BlacklistPlugin::$shallow_blacklist[] = 'Psr\Container\ContainerInterface';
- 要更改显示主题,请使用
Kint\Renderer\RichRenderer::$theme = 'theme.css';
. 您可以将绝对路径传递给 CSS 文件,或使用内置主题之一:original.css
(默认)solarized.css
solarized-dark.css
aante-light.css
- Kint 有键盘快捷键!当 Kint 可见时,按 D 键盘上的 ,您将能够使用箭头 HJKL、 和 TAB 键遍历树- 并使用 SPACE 或展开/折叠节点 ENTER。
- 您可以编写插件和包装函数来自定义转储行为!
- 阅读 完整文档 以获取更多信息。
附录 1:解释下什么是 phar
PHP 5.3 之后支持了类似 Java 的 jar 包,名为 phar,用来将多个 PHP 文件打包为一个文件,通俗点说说是:将项目(框架)压缩成一个文件,直接引用这个文件,就可以直接使用这个项目(框架)的所有功能。
附录 2:解释下什么是composer
Composer是PHP中用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer会帮你安装这些依赖的库文件。
扩展的使用
扩展地址:https://kint-php.github.io/kint/plugins/
介绍下 microtime
的使用
官方给出的运行结果
实际测试代码
<?php require 'D:/wamp/www/vendor/autoload.php'; // 加载需要用到的扩展 Kint::$plugins = array( new Kint\Parser\MicrotimePlugin(), ); // 打出相应的时间 Kint::dump(microtime()); Kint::dump($GLOBALS, $_SERVER); Kint::trace(); // Debug backtrace // 在次打出时间 Kint::dump(microtime()); // 清除时间 Kint\Parser\MicrotimePlugin::clean();
运行结果
更多扩展
扩展地址:https://kint-php.github.io/kint/plugins/
从源码中找到的相关扩展
public static $plugins = array( 'Kint\\Parser\\ArrayObjectPlugin', 'Kint\\Parser\\Base64Plugin', 'Kint\\Parser\\BlacklistPlugin', 'Kint\\Parser\\ClassMethodsPlugin', 'Kint\\Parser\\ClassStaticsPlugin', 'Kint\\Parser\\ClosurePlugin', 'Kint\\Parser\\ColorPlugin', 'Kint\\Parser\\DateTimePlugin', 'Kint\\Parser\\FsPathPlugin', 'Kint\\Parser\\IteratorPlugin', 'Kint\\Parser\\JsonPlugin', 'Kint\\Parser\\MicrotimePlugin', 'Kint\\Parser\\SimpleXMLElementPlugin', 'Kint\\Parser\\SplFileInfoPlugin', 'Kint\\Parser\\SplObjectStoragePlugin', 'Kint\\Parser\\StreamPlugin', 'Kint\\Parser\\TablePlugin', 'Kint\\Parser\\ThrowablePlugin', 'Kint\\Parser\\TimestampPlugin', 'Kint\\Parser\\ToStringPlugin', 'Kint\\Parser\\TracePlugin', 'Kint\\Parser\\XmlPlugin', );
相关问题与技巧
在线上码残留了相关代码怎么办?
可以通过配置 Kint::$enabled_mode = false;
来将相应的代码不输出。
开发人员启用了Kint的调试,而又不想用户看见怎么办?
可以通过 $_SERVER['REMOTE_ADDR']
来获得指定IP开启调试,其他IP不开启调试。
查看界面太丑?
想换 UI?可以通过 Kint\Renderer\RichRenderer::$theme
设置相应的 UI。
相关链接
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论