inanepain/dumper

一个小工具,通过在不引人注目的方式将类似于 `var_dump` 的消息写入页面底部的可折叠面板,来帮助进行调试。

1.14.1 2023-06-27 09:04 UTC

This package is auto-updated.

Last update: 2024-09-20 07:23:08 UTC


README

目录

1. 概述

一个小工具,通过将类似于 var_dump 的消息在不引人注目的方式写入页面底部的可折叠面板,来帮助进行调试。

2. 安装

$ composer require inanepain/dumper

3. 基本用法

Dumper 可以直接使用。通过 composer 安装后,您可以直接使用它来转储您的对象,使用以下任一方法;在 \Inane\Dumper\Dumper 对象上使用 dumpassert 方法。

dump 方法是默认方法,它会记录它所接受的内容。而 assert 方法则对其第一个参数进行测试,只有在测试 失败假值)时才会记录。

基本用法
\Inane\Dumper\Dumper::dump($data, 'After marge process');
\Inane\Dumper\Dumper::assert(!$data->error, $data, 'After marge process'); // (1)
  1. 如果错误为 ,则记录

3.1. 使用便捷性

Dumper 注册了快捷函数 ddda,它们的工作方式与调用 \Inane\Dumper\Dumper::dump()\Inane\Dumper\Dumper::assert() 相同。

基本快捷用法
dd($data, 'After marge process');
da(!$data->error, $data, 'After marge process'); // (1)
  1. 如果错误为 ,则记录

4. 从 Dumper 获取更多

有关 Dumper 使用的一些有用提示和技巧。

4.1. Dumper:别名

创建一个自定义的全局函数,作为 \Inane\Dumper\Dumper::dump 方法的别名。

为 Dumper 创建一个自定义别名
\Inane\Dumper\Dumper::dumper('kickIt', 'shErr');

// you can now use your `kickIt` function the same as the `dump` method.
kickIt($data, 'Data after...'); // (1)
// what about `shErr`?
shErr(!$data->error, $data, 'Data after...'); // (2)

// without *ext-runkit7*. Note the $kickIt is a variable.
$kickIt($data, 'Data after...');
$shErr(!$data->error, $data, 'Data after...'); // (2)
  1. 转储方法的第一参数创建类似于 dd 函数的 dump 别名。

  2. 第二个参数设置类似于 daassert 别名。

这就是创建 Dumper 自定义全局快捷函数的简单方法。

4.2. Dumper:配置

Dumper 有几个静态公共属性,您可以使用它们来更改某些默认行为。

4.2.1. enabled

Dumper 默认启用,但如果您希望删除所有与 Dumper 相关的内容,请在此处禁用它。

默认值: true

配置: 关闭 Dumper 的输出
\Inane\Dumper\Dumper::$enabled = false;

4.2.2. bufferOutput

将转储写入最后,在 PHP 终止之前。设置为 false 以在运行时插入转储。

默认值: true

配置: 关闭缓冲输出以打印转储
// Somewhere before using Dumper, or even after for a section of code and then turn buffer on again.
\Inane\Dumper\Dumper::$bufferOutput = false;
// some code loop probably
\Inane\Dumper\Dumper::$bufferOutput = true;

4.2.3. useVarExport

默认情况下,Dumper 使用自己的变量解析器来生成输出。您在此可以告诉 Dumper 使用 var_export 代替。

默认值: false

配置: 将转储设置为使用 var_export
// set value to true
\Inane\Dumper\Dumper::$useVarExport = true;

4.2.4. highlight

设置 Dumper 使用的颜色主题。默认情况下,它使用在您的 php.ini 文件中已设置的颜色。

默认值: \Inane\Stdlib\Highlight::CURRENT

  1. \Inane\Stdlib\Highlight 中的可用颜色

    • CURRENT

    • DEFAULT

    • PHP2

    • HTML

配置: 设置转储颜色
// set colour theme
\Inane\Dumper\Dumper::$highlight = \Inane\Stdlib\Highlight::PHP2;

4.2.5. expanded

控制 Dumper 面板初始展开状态。

默认值: false

配置: Dumper 日志面板初始状态
// Create the Dumper panel expanded
\Inane\Dumper\Dumper::$expanded = true;

4.2.6. setColours

允许设置自定义 CLI 颜色或完全禁用 CLI 颜色。

默认值
[
	'reset' => "\033[0m",		# console default
	'dumper' => "\033[35m",		# magenta
	'label' => "\033[34m",		# blue
	'file' => "\033[97m",		# while
	'line' => "\033[31m",		# red
	'divider' => "\033[33m",	# yellow
];
配置: 设置 CLI 颜色
// Remove cli colouring
\Inane\Dumper\Dumper::setConsoleColours(false);

// Setting default colours
\Inane\Dumper\Dumper::setConsoleColours([]);

// Remove cli colouring
\Inane\Dumper\Dumper::setConsoleColours(false);
// creating a colour using Pencil from `inanepain/cli`
$label = new \Inane\Cli\Pencil(colour: \Inane\Cli\Pencil\Colour::Green, background: \Inane\Cli\Pencil\Colour::Red, style: \Inane\Cli\Pencil\Style::SlowBlink);
// Then set colours for **file**, **label** and **reset**
\Inane\Dumper\Dumper::setConsoleColours([
	'file' => "\033[36m",
	'label' => "$label",
	'reset' => "\033[0m",
]);

4.3. Dumper:UI

自定义 Dumper 的外观和感觉。

4.3.1. 面板

这是通过设置以下 CSS 变量 和一些 PHP 类属性 来实现的。

字体大小

调整 Dumper 面板使用的字体大小。

  • 变量: --dumper-font-size

  • 默认: 较小

最大高度

调整打开Dumper面板时允许的最大高度。

  • 变量: --dumper-max-height

  • 默认: 80vh

展开

控制 Dumper 面板初始展开状态。

默认值: false

配置: Dumper 日志面板初始状态
// Create the Dumper panel expanded
\Inane\Dumper\Dumper::$expanded = true;

4.3.2. 主题

通过在Dumper对象上更改静态属性,在PHP中切换Dumper主题。

高亮

设置 Dumper 使用的颜色主题。默认情况下,它使用在您的 php.ini 文件中已设置的颜色。

默认值: \Inane\Stdlib\Highlight::CURRENT

  1. \Inane\Stdlib\Highlight 中的可用颜色

    • CURRENT

    • DEFAULT

    • PHP2

    • HTML

配置: 设置转储颜色
// set colour theme
\Inane\Dumper\Dumper::$highlight = \Inane\Stdlib\Highlight::PHP2;

4.4. Dumper:静默

您可以使用\Inane\Dumper\Silence属性来静音输出,静音指定数量的输出,仅显示指定数量的输出然后静音,针对方法函数。Silence属性还允许您设置Silence的初始状态,然后设置计数器,在此之后状态将切换。

基本Silence使用
use Inane\Dumper\Silence as DumperSilence;

#[DumperSilence()]
function doFirst(): void {
	echo 'hello', PHP_EOL;

	dd(__FUNCTION__, 'one');
	dd(__FUNCTION__, 'two');
}


#[DumperSilence(false)]
function doSecond(): void {
	echo 'hello', PHP_EOL;

	dd(__FUNCTION__, 'one');
	dd(__FUNCTION__, 'two');
}

doFirst(); // (1)
// hello

doSecond(); // (2)
// hello
// doSecond, one
// doSecond, two
  1. 这仅输出echo。`dd`被忽略。

  2. 这里显示echodd的输出。

4.4.1. 切换状态

此Silence功能允许您在指定数量的输出请求后启用或禁用输出。这使得您在迭代大型集合时仅记录少量项目。

如果您指定了限制,Silence的第二个参数,Silence实例将在接收到那么多检查请求后切换其值。即静音变为详细,反之亦然。

切换Silence使用
use Inane\Dumper\Silence as DumperSilence;

#[DumperSilence(false, 1)]
function doFirst(): void {
	echo 'hello', PHP_EOL;

	dd(__FUNCTION__, 'one');
	dd(__FUNCTION__, 'two');
}


#[DumperSilence(true, 1)]
function doSecond(): void {
	echo 'hello', PHP_EOL;

	dd(__FUNCTION__, 'one');
	dd(__FUNCTION__, 'two');
}

doFirst(); // (1)
// hello
// doFirst, two

doSecond(); // (2)
// hello
// doSecond, one
  1. 现在我们有了echo和第一个dd请求的值。Silence在1次请求后从false切换到true,因此第二个dd请求被忽略。

  2. 这是第一种的相反。这里只显示了第一个dd请求。

4.4.2. 高级:记录Silence检查

实际上,用“真正技术性的内容”来描述这一部分可能更好。默认情况下,Silence检查不会在Dumper面板中显示,但如果您想了解为什么您的切换没有按预期工作,则可以启用此功能。

要启用此功能,只需进行一个简单的步骤,将Type::Silence添加到Dumper::$additionalTypes数组中。

记录Silence请求
Dumper::$additionalTypes[] = Type::Silence; // (1)
// code
Dumper::$additionalTypes = []; // (2)
  1. 未来的Silence检查将在Dumper面板中显示。

  2. 并且此之后的Silence检查将不再在Dumper面板中显示。

自定义Silence检查

您可以根据Silence实例自定义Silence检查日志,通过为其提供自定义的标签颜色使其突出。

自定义Silence日志
#[Silence(on: true, config: [
	'label' => 'Do Test This', // (1)
	'colour' => 'purple', // (2)
])]
function doThis(): void {
	dd(null, 'Dump nothing important'); // (3)
}

doThis(); // (4)
doThis(); // (4)
doThis(); // (4)
  1. 设置自定义标签以在Dumper面板中显示。

  2. 设置Dumper面板中日志条目的自定义颜色。

  3. 这不会显示,因为Silence的原因

  4. 每次调用此函数时都会添加一个紫色条目,标签为Do Test This