Kint 调试工具 PHP 开发人员的调试助手

发布于 2021-06-09 12:45:47 字数 5847 浏览 1465 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

马化腾

文章 0 评论 0

thousandcents

文章 0 评论 0

辰『辰』

文章 0 评论 0

ailin001

文章 0 评论 0

冷情妓

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文