youssef/debug

Kint - PHP开发者的调试助手

安装: 826

依赖: 2

建议: 0

安全: 0

星标: 0

关注者: 1

分支: 290

1.0.14 2017-02-02 20:23 UTC

README

Total Downloads

Screenshot

我在看什么?

乍一看,Kint只是var_dump()、print_r()和debug_backtrace()的漂亮替代品。

然而,它的功能远不止于此。即使是优秀的xdebug var_dump改进也无法与之相比——你最终会 wonder你以前是如何在没有它的前提下开发的。

以下列出一些最有用的功能:

  • 显示Kint被调用的变量的名称和文件加行号;
  • 您可以轻松地禁用所有Kint输出,并且可以即时操作——这样您甚至可以在没有人知道的情况下调试实时系统(尽管你知道你不应该这样做!:)。
  • 检测到CLI并将其格式化以自动执行(但一切都可以即时覆盖)——如果您的设置支持它,输出也将着色
    Kint CLI output
  • 调试回溯现在终于完全可读,实际上很有信息量,而且看起来很令人愉悦。
  • Kint自2010年以来一直处于积极开发中,并且默认随Drupal 8一起发货,作为其开发套件的一部分。您可以相信它不会废弃或落后于功能。
  • 变量内容以最信息化的方式显示——您永远不会错过任何东西!Kint保证您看到您正在转储的关于每件事物物理上可用的所有信息;
    • 在某些情况下,内容会被截断,否则它可能太大而无法查看——但用户总是被告知这一点;
  • 一些变量内容类型具有替代显示——例如,您将能够以原始形式查看JSON,但也作为关联数组
    Kint displays data intelligently
    内置了超过十个自定义变量类型显示,并且定期添加更多。

安装和用法

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_PLAINKint::MODE_WHITESPACEKint::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 themes
  • Kint还包括一个简单的分析器,您可能会觉得它很有用。它用于确定哪些代码块比其他代码块花费的时间更长
Kint::dump( microtime() ); // just pass microtime()
sleep( 1 );
Kint::dump( microtime(), 'after sleep(1)' );
sleep( 2 );
ddd( microtime(), 'final call, after sleep(2)' );

Kint profiling feature

  • 看到输出右边的那些小箭头吗?点击它们(不过不要在图片上点击 :))以在单独的浏览器窗口中打开其父节点。

作者

罗卡斯·斯莱尼乌斯(raveren)

许可证

许可协议为MIT许可证