youssef / debug
Kint - PHP开发者的调试助手
1.0.14
2017-02-02 20:23 UTC
Requires
- php: >=5.1.0
This package is not auto-updated.
Last update: 2024-09-23 14:23:53 UTC
README
我在看什么?
乍一看,Kint只是var_dump()、print_r()和debug_backtrace()的漂亮替代品。
然而,它的功能远不止于此。即使是优秀的xdebug var_dump改进也无法与之相比——你最终会 wonder你以前是如何在没有它的前提下开发的。
以下列出一些最有用的功能:
- 显示Kint被调用的变量的名称和文件加行号;
- 您可以轻松地禁用所有Kint输出,并且可以即时操作——这样您甚至可以在没有人知道的情况下调试实时系统(尽管你知道你不应该这样做!:)。
- 检测到CLI并将其格式化以自动执行(但一切都可以即时覆盖)——如果您的设置支持它,输出也将着色
- 调试回溯现在终于完全可读,实际上很有信息量,而且看起来很令人愉悦。
- Kint自2010年以来一直处于积极开发中,并且默认随Drupal 8一起发货,作为其开发套件的一部分。您可以相信它不会废弃或落后于功能。
- 变量内容以最信息化的方式显示——您永远不会错过任何东西!Kint保证您看到您正在转储的关于每件事物物理上可用的所有信息;
- 在某些情况下,内容会被截断,否则它可能太大而无法查看——但用户总是被告知这一点;
- 一些变量内容类型具有替代显示——例如,您将能够以原始形式查看JSON,但也作为关联数组
内置了超过十个自定义变量类型显示,并且定期添加更多。
安装和用法
Kint的主要目标之一是<强>无设置强>。
下载存档并简单
<?php require '/kint/Kint.class.php';
或者,如果您使用Composer
"require": { "raveren/kint": "^1.0" }
或者只需运行composer require raveren/kint
这就完成了,您现在可以使用Kint来调试您的代码
########## DUMP VARIABLE ########################### Kint::dump($GLOBALS, $_SERVER); // pass any number of parameters // or simply use d() as a shorthand: d($_SERVER); ########## DEBUG BACKTRACE ######################### Kint::trace(); // or via shorthand: d(1); ############# BASIC OUTPUT ######################### # this will show a basic javascript-free display s($GLOBALS); ######### WHITESPACE FORMATTED OUTPUT ############## # this will be garbled if viewed in browser as it is whitespace-formatted only ~d($GLOBALS); // just prepend with the tilde ########## MISCELLANEOUS ########################### # this will disable kint completely Kint::enabled(false); ddd('Get off my lawn!'); // no effect Kint::enabled(true); ddd( 'this line will stop the execution flow because Kint was just re-enabled above!' );
注意,Kint确实有配置(如主题和IDE集成!),但它需要重写,所以我还没有记录它。
技巧与技巧
- Kint默认启用,调用
Kint::enabled(false);
来完全关闭其功能。最佳实践是仅在开发环境(或例如Kint::enabled($_SERVER['REMOTE_ADDR'] === '<your IP>');
)中启用Kint——这样即使您不小心在生产中留下了转储,也没有人会发现。 sd()
和ddd()
分别是s();die;
和d();die;
的缩写。- Kint有键盘快捷键!当Kint可见时,按键盘上的D键,您将能够使用箭头键和tab键遍历树,并使用空格或enter键展开/折叠节点。
- 双击输出中的[+]号将展开/折叠所有节点;三击大块文本将选择全部。
- 要捕获Kint的输出,只需将其分配给一个变量beta
$o = Kint::dump($GLOBALS); // yes, the assignment is automatically detected, and $o // now holds whatever was going to be printed otherwise. // it also supports modifiers (read on) for the variable: ~$o = Kint::dump($GLOBALS); // this output will be in whitespace
- 您可以使用一些实时修改器
~d($var)
此调用将以纯文本格式输出。+d($var)
将忽略深度级别限制并输出所有内容(小心,这可能会导致浏览器在处理大型对象时卡住)!d($var)
将显示展开的丰富输出。-d($var)
将尝试使用ob_clean
清除之前的输出,因此如果您在HTML页面内部输出,您仍然会看到Kint的输出。您也可以组合修改器:~+d($var)
- 要强制指定特定的输出类型,只需将其传递给
Kint::enabled()
方法。可用选项包括:Kint::MODE_RICH
(默认),Kint::MODE_PLAIN
,Kint::MODE_WHITESPACE
和Kint::MODE_CLI
Kint::enabled(Kint::MODE_WHITESPACE); $kintOutput = Kint::dump($GLOBALS); // now $kintOutput can be written to a text log file and // be perfectly readable from there
- 要更改显示主题,使用
Kint::$theme = '<theme name>';
可用选项包括:'original'
(默认),'solarized'
,'solarized-dark'
和'aante-light'
。这里是一个(过时的)预览
- Kint还包括一个简单的分析器,您可能会觉得它很有用。它用于确定哪些代码块比其他代码块花费的时间更长
Kint::dump( microtime() ); // just pass microtime() sleep( 1 ); Kint::dump( microtime(), 'after sleep(1)' ); sleep( 2 ); ddd( microtime(), 'final call, after sleep(2)' );
- 看到输出右边的那些小箭头吗?点击它们(不过不要在图片上点击 :))以在单独的浏览器窗口中打开其父节点。
作者
罗卡斯·斯莱尼乌斯(raveren)
许可证
许可协议为MIT许可证