bonemeijer/smartdump

PHP5.6+ 的 var_dump 更智能的替代品

v0.2.7 2021-02-25 08:19 UTC

This package is auto-updated.

Last update: 2024-09-25 16:14:20 UTC


README

PHP5.6+ 的 var_dump 更智能的替代品

目标是提供一个友好且与框架无关的调试工具,它可以在多个环境中工作。

Build Status Latest Stable Version Total Downloads License

安装

该项目仍处于测试版。在此期间可能引入向后不兼容的更改。

composer require --dev bonemeijer/smartdump

基本用法

默认情况下,SmartDump 已配置为检测您的调试位置,并输出纯文本或 HTML。例如:当您从命令行导出时,将使用纯文本输出。但当您从浏览器调试时,将使用交互式 HTML 输出。

有一个主要的 SmartDump 类,它提供了一个友好的全局接口,用于在代码的任何位置调试变量。但请放心,您也可以使用和配置自己的实例。

\SmartDump\SmartDump::dump($variable);

快捷函数

更简单的是快捷函数。这些函数位于全局命名空间中,因此您在快速调试变量时无需进行任何导入。

可用函数

  • smartdump($variable) - 简化 \SmartDump\SmartDump::dump($variable);
  • smartdump_text($variable) - 将纯文本输出到输出
  • smartdump_html($variable) - 将简单 HTML 输出到输出
  • smartdump_text_stream - 将纯文本输出到文件或 URL
  • d($variable) - 输出上下文感知格式到输出
  • o($variable) - 输出上下文感知格式到输出,清除输出缓冲区并退出()

提示 - 快捷函数 smartdump() 使用全局 SmartDump 类,因此您可以通过 SmartDump 类配置所需的行为。

高级用法

SmartDump 将内部使用 NodeFactory 将任何传入的变量转换为 Node。然后,这些节点将被传递到 Dumper,它将接受 Formatter 以渲染输出格式。

节点

一个 Node 实际上是变量的内部表示。默认情况下,DefaultNodeFactory 支持所有常规 PHP 变量类型,如布尔值、字符串、整数、浮点数、数组、对象、资源和无值。

格式化器

格式化器将 Node 格式化为 Dumper 可以处理的输出。目前只有字符串类型的格式化器,它将 Node 渲染为字符串。

默认情况下,将使用 ContextAwareStringFormatter,它将返回基于您调试位置的格式化器。

可用格式化器

  • PlainTextStringFormatter - 格式化为纯文本,用于命令行和其他基于文本的环境
  • DomStringFormatter - 可以使用 Markup 文档输出 HTML(或将来 XML 或任何其他标记语言)
  • ContextAwareStringFormatter - 根据当前环境在纯文本和 DOM 之间切换
  • CallBackStringFormatter - 接受回调以确定使用哪个格式化器

要为所有 SmartDump::dump() 调用全局使用不同的格式化器

\SmartDump\SmartDump::setFormatter(
    new \SmartDump\Formatter\StringFormatter\PlainTextStringFormatter()
);

导出器

一个 Dumper 将确定格式化节点如何处理。默认情况下,使用 OutputDumper,它将简单地回显输出到屏幕。

可用导出器

  • OutputDumper - 简单地回显输出
  • StreamDumper - 将格式化输出导出到文件或流

要为所有 SmartDump::dump() 调用全局使用不同的导出器

\SmartDump\SmartDump::setDumper(
    new \SmartDump\Dumper\StreamDumper('output.txt')
);

部署

不要部署调试工具。这就是为什么我建议在安装期间使用 --dev 标志。

版本控制

SmartDump使用SemVer进行版本控制。有关可用的版本,请参阅此仓库中的标签

作者

还可以查看参与此项目的贡献者列表

许可证

本项目采用MIT许可证 - 详细内容请参阅LICENSE文件

链接