raveren / kint
Requires
- php: >=5.1.0
Requires (Dev)
- seld/phar-utils: ^1.2
- symfony/finder: ^3.0 || ^4.0 || ^5.0
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
,你有几个选项
-
创建一个单独的 PHP 配置文件,并让 composer 为你自动加载它
将此条目添加到
composer.json
中的autoload.files
配置键
"autoload": { /* ... */ "files": [ "config/sage.php" /* <--------------- this line */ ] },
- 在
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
- 在启动过程中任何地方包含所需的设置。
可用的自定义选项列表
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。
- 支持便利修饰符,例如
@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
风格的调试仍然相关?
- 实际上,Xdebug 的安装和配置通常非常困难且耗时。
- 有许多情况,使用 dump&die 更快。
- 你无法使用 XDebug 可视化更改数据的时间线。例如,所有在循环内输出的值。
- 还有更多细微的使用案例,例如,如果你越过了某个东西,就无法返回,但使用 var-dumping,感兴趣的值仍然在输出中...
顺便说一下,我几乎每天都使用 xdebug。与 Sage 并列。
💬 其他还有哪些 dump 工具?
💬 为什么 Sage 看起来那么像 Kint?
因为它就是 Kint,我是它的作者,然而项目被一个恶意贡献者 明显地 窃取 了!
与其与 DMCA 风车作战,我选择分支并重命名最后一个好版本,以新名称继续。
作者
Rokas Šleinius (Raveren)
许可
MIT 许可证下授权
希望你会像我喜欢创造它一样喜欢使用 Sage!