raveren/kint

此包已被放弃,不再维护。作者建议使用 php-sage/sage 包。

☯ 深入的 PHP 调试助手。

v1.2.10 2022-01-13 22:50 UTC

This package is auto-updated.

Last update: 2022-02-01 12:48:15 UTC


README

乍一看,Sage 只是一个比 var_dump()debug_backtrace() 更好看的替代品。

然而,它要多得多。

要了解 Sage 的出色功能,请跳转到 常见问题解答

安装

下载 phar 并简单地

<?php
require 'sage.phar';

sage('Hello, 🌎!');

或者,如果你的项目使用 composer

composer require php-sage/sage --dev

使用方法

sage($GLOBALS, $_SERVER); // dump any number of parameters

saged($GLOBALS, $_SERVER); // alias for sage();die;

sage(1); // shortcut for dumping trace

自定义选项

Sage 被精心设计,旨在易于使用和实用,然而,为高级用户提供了几个自定义选项。

自定义存储位置

如果你使用 phar 版本,它不会变得更简单

require 'sage.phar';
Sage::$theme = Sage::THEME_LIGHT;

如果你使用 composer,你有几个选项

  1. 创建一个单独的 PHP 配置文件,并让 composer 为你自动加载它

    将此条目添加到 composer.json 中的 autoload.files 配置键

"autoload": {
  /* ... */
  "files": [
    "config/sage.php" /* <--------------- this line */
  ]
},
  1. php.ini 中放置设置
; change sage theme:
sage.theme = solarized-dark
; always display all dump levels, almost always crashes the browser:
sage.maxLevels = 0
; it's been 10 years, and phpstorm:// is still not working, Jetbrains, PLEASE!
sage.editor = phpstorm-remotecall
; disable Sage unless explicitly enabled
sage.enabled = 0 
  1. 在启动过程中任何地方包含所需的设置。

可用的自定义选项列表

Sage::$theme = Sage::THEME_ORIGINAL;

当前可用的主题有

  • Sage::THEME_ORIGINAL
  • Sage::THEME_LIGHT
  • Sage::THEME_SOLARIZED
  • Sage::THEME_SOLARIZED_DARK
Sage::$editor = ini_get('xdebug.file_link_format');

使源文件路径可点击以打开您的编辑器。可用选项包括

  • 'sublime'
  • 'textmate'
  • 'emacs'
  • 'macvim'
  • 'phpstorm'
  • 'phpstorm-remotecall' - 我过去8年一直在使用的一个。需要 远程调用 插件。
  • 'idea'
  • 'vscode'
  • 'vscode-insiders'
  • 'vscode-remote'
  • 'vscode-insiders-remote'
  • 'vscodium'
  • 'atom'
  • 'nova'
  • 'netbeans'
  • 'xdebug'

或者传递一个自定义字符串,其中 %f 应替换为完整文件路径,%l 应替换为行号以创建自定义链接。设置为 null 以禁用链接。

Sage::$displayCalledFrom = true;

是否显示 Sage 被调用的位置

Sage::$maxLevels = 7;

最大数组/对象级别,设置为零/假以禁用

Sage::$appRootDirs = [ $_SERVER['DOCUMENT_ROOT'] => 'ROOT' ];

您的应用程序目录列表,显示时将代替完整路径。键是路径,值是替换字符串。

如果您需要隐藏访问路径,请使用此功能。

        // Example (for Kohana framework (R.I.P.)):
        Sage::appRootDirs = [
             SYSPATH => 'SYSPATH',
             MODPATH => 'MODPATH',
             DOCROOT => 'DOCROOT',
        ];
Sage::$expandedByDefault = false;

无需点击即可直接显示已展开的丰富输出。

Sage::$cliDetection = true; 

在命令行运行时启用检测并相应调整输出格式。

Sage::$cliColors = true;

除了上述设置外,当Sage在UNIX命令行中运行时也启用检测。尝试添加颜色,但如果以纯文本打开,颜色信息将显示为乱码。

Sage::$charEncodings =  [
    'UTF-8',
    'Windows-1252', # Western; includes iso-8859-1, replace this with windows-1251 if you have Russian code
    'euc-jp',       # Japanese
]

按概率顺序的可能字符编码。

Sage::$returnOutput = false;

Sage返回输出而不是打印它。

Sage::$aliases;

添加新的自定义Sage包装器名称。这是可选的,但对于回溯、变量名检测和修改器正常工作是必需的。接受数组或逗号分隔的字符串。使用Class::method表示方法。

// example, returns text-only output
function MY_dump($args)
{
    Sage::enabled(Sage::MODE_TEXT_ONLY);
    Sage::$returnOutput = true; // this configuration will persist for ALL subsequent dumps BTW!
    return d(...func_get_args());
}
Sage::$aliases[] = 'my_dump'; // let Sage know about it. In lowercase please.

🧙 技巧与窍门

// we already saw:
sage($GLOBALS, $_SERVER); 
// you can also go shorter for the same result:
d($GLOBALS, $_SERVER);
// or you can go the verbose way, it's all equivalent:
Sage::dump($GLOBALS, $_SERVER); 


// s() will display a more basic, javascript-free display (but with colors)
s($GLOBALS, $_SERVER);

// prepending a tilde will make the output even more basic (rich->basic and basic->plain text)
~d($GLOBALS, $_SERVER); // more on modifiers below

// show a trace
Sage::trace();
d(1); // shorthand works too!
Sage::dump( debug_backtrace() ); // you can even pass a custom result from debug_trace and it will be recognized

// dump and die debugging
dd($GLOBALS, $_SERVER); // dd() might be taken by your framework
ddd($GLOBALS, $_SERVER); // so here are some equivalent altenratives
saged($GLOBALS, $_SERVER);
sd($GLOBALS, $_SERVER); // available for plain display too!

// this will disable Sage completely
Sage::enabled(false);
ddd('Get off my lawn!'); // no effect
  • Sage支持键盘快捷键!在查看输出时按下d,其余的都一目了然(ps. vim风格的hjkl也适用);

  • 调用Sage::enabled(Sage::MODE_PLAIN);以切换到更简单、无js的输出。

  • 调用Sage::enabled(Sage::MODE_TEXT_ONLY);以获取纯文本输出,您可以通过首先设置Sage::$returnOutput = true;来保存或传递。

  • Sage可以提供纯文本版本的输出,并在通过在命令行模式下运行的PHP调用时自动执行。

  • 双击输出中的[+]符号将展开/折叠所有节点;三击大块文本将选择所有内容。

  • 单击输出右侧的小箭头将在单独的窗口中打开它,您可以在其中保留它以进行比较。

  • Sage支持主题

    有关自定义说明,请参阅下面的部分。

  • 如果变量是对象,则可以单击其类名在IDE中打开类。

  • 您可以使用一些实时修改器

    • ~d($var)此调用将以纯文本格式输出。
    • +d($var)将忽略深度级别限制并输出所有内容(小心,这可能会使您的浏览器在大型对象上挂起)
    • !d($var)将显示未展开的丰富输出。
    • -d($var)将尝试执行ob_clean之前的输出 - 当Sage被现有的HTML遮蔽时很有用。

    这里有关于它是如何工作的简要说明。

  • Sage还包括一个简单的性能分析器,您可能会觉得它很有用。它是用于确定相对而言哪些代码块比其他代码块运行时间更长

Sage::dump( microtime() ); // just pass microtime()
sleep( 1 );
Sage::dump( microtime(), 'after sleep(1)' );
sleep( 2 );
ddd( microtime(), 'final call, after sleep(2)' );

常见问题解答(F.A.Q.)

💬 它与symfony/var-dumper有什么不同或更好?

  • 可见的 变量名
  • 键盘快捷键。键入d,其余的都一目了然。
  • 调试回溯具有对参数、被调用对象等内容的全面洞察。 Trace view
  • 为许多已识别的类型提供自定义显示:
  • 具有文本、纯文本和丰富视图,配置简单,有多个视觉主题 - 实际上是由专业设计师创建的。
  • 大量的小型可用性改进 - 如每个输出的页脚中的(可点击的)调用 trace
  • 支持便利修饰符,例如 @sage($var); 将返回而不是输出,-sage($var);ob_clean 所有输出到页面上的唯一内容。
  • 支持 PHP 5.1+!这是扩展兼容性的最低物理版本。下次当你对某个非常旧的遗留事物感到头痛时,别忘了 Sage!
  • 它要简单得多 - 读取和贡献。

🔀 它有哪些不足之处?

  • 它不会与你的酷框架预装(但它是零配置!)
  • 虽然 Sage 早于 var-dumper,而且我非常确信它 “启发了” 精彩的缩写 dd 的广泛应用,但我退位让给了 var-dumper 使用这个名称。要使用 Sage 来 & die,你可以 ddd()saged()
  • 没有这样的功能,例如,至少直到有人说服我它实际上是有用的。
  • 它不是由 Symfony 基金会制作的,也没有行业级的支持。它是由一个(和 贡献者)从 2012 年以前 开始制作的。

💬 当我们有了 Xdebug 时,为什么 var_dump 风格的调试仍然相关?

  1. 实际上,Xdebug 的安装和配置通常非常困难且耗时。
  2. 有许多情况,使用 dump&die 更快。
  3. 你无法使用 XDebug 可视化更改数据的时间线。例如,所有在循环内输出的值。
  4. 还有更多细微的使用案例,例如,如果你越过了某个东西,就无法返回,但使用 var-dumping,感兴趣的值仍然在输出中...

顺便说一下,我几乎每天都使用 xdebug。与 Sage 并列。

💬 其他还有哪些 dump 工具?

💬 为什么 Sage 看起来那么像 Kint?

因为它就是 Kint,我是它的作者,然而项目被一个恶意贡献者 明显地 窃取 了!

与其与 DMCA 风车作战,我选择分支并重命名最后一个好版本,以新名称继续。

作者

Rokas Šleinius (Raveren)

许可

MIT 许可证下授权

希望你会像我喜欢创造它一样喜欢使用 Sage!