inanepain / dumper
一个小工具,通过在不引人注目的方式将类似于 `var_dump` 的消息写入页面底部的可折叠面板,来帮助进行调试。
Requires
- php: >=8.1
- inanepain/stdlib: >=0.3.1 || dev-master || dev-develop
Suggests
- ext-runkit7: Allows creating custom aliases for dump method
- inanepain/cli: Using the Pencil class makes setting console colours easy
README
目录1. 概述
一个小工具,通过将类似于 var_dump
的消息在不引人注目的方式写入页面底部的可折叠面板,来帮助进行调试。
2. 安装
$ composer require inanepain/dumper
3. 基本用法
Dumper 可以直接使用。通过 composer 安装后,您可以直接使用它来转储您的对象,使用以下任一方法;在 \Inane\Dumper\Dumper
对象上使用 dump
或 assert
方法。
dump
方法是默认方法,它会记录它所接受的内容。而 assert
方法则对其第一个参数进行测试,只有在测试 失败 (假值)时才会记录。
\Inane\Dumper\Dumper::dump($data, 'After marge process'); \Inane\Dumper\Dumper::assert(!$data->error, $data, 'After marge process'); // (1)
-
如果错误为 真,则记录
3.1. 使用便捷性
Dumper 注册了快捷函数 dd
和 da
,它们的工作方式与调用 \Inane\Dumper\Dumper::dump()
或 \Inane\Dumper\Dumper::assert()
相同。
dd($data, 'After marge process'); da(!$data->error, $data, 'After marge process'); // (1)
-
如果错误为 真,则记录
4. 从 Dumper 获取更多
有关 Dumper
使用的一些有用提示和技巧。
4.1. Dumper:别名
创建一个自定义的全局函数,作为 \Inane\Dumper\Dumper::dump
方法的别名。
\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)
-
转储方法的第一参数创建类似于
dd
函数的dump
别名。 -
第二个参数设置类似于
da
的assert
别名。
这就是创建 Dumper 自定义全局快捷函数的简单方法。
4.2. Dumper:配置
Dumper 有几个静态公共属性,您可以使用它们来更改某些默认行为。
4.2.1. enabled
Dumper 默认启用,但如果您希望删除所有与 Dumper 相关的内容,请在此处禁用它。
默认值: true
\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
// set value to true \Inane\Dumper\Dumper::$useVarExport = true;
4.2.4. highlight
设置 Dumper 使用的颜色主题。默认情况下,它使用在您的 php.ini 文件中已设置的颜色。
默认值: \Inane\Stdlib\Highlight::CURRENT
-
在
\Inane\Stdlib\Highlight
中的可用颜色-
CURRENT
-
DEFAULT
-
PHP2
-
HTML
-
// set colour theme \Inane\Dumper\Dumper::$highlight = \Inane\Stdlib\Highlight::PHP2;
4.2.5. expanded
控制 Dumper 面板初始展开状态。
默认值: false
// 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
// Create the Dumper panel expanded \Inane\Dumper\Dumper::$expanded = true;
4.3.2. 主题
通过在Dumper对象上更改静态属性,在PHP中切换Dumper主题。
高亮
设置 Dumper 使用的颜色主题。默认情况下,它使用在您的 php.ini 文件中已设置的颜色。
默认值: \Inane\Stdlib\Highlight::CURRENT
-
在
\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的初始状态,然后设置计数器,在此之后状态将切换。
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
-
这仅输出
echo
。`dd`被忽略。 -
这里显示
echo
和dd
的输出。
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
-
现在我们有了
echo
和第一个dd
请求的值。Silence在1
次请求后从false
切换到true
,因此第二个dd
请求被忽略。 -
这是第一种的相反。这里只显示了第一个
dd
请求。
4.4.2. 高级:记录Silence检查
实际上,用“真正技术性的内容”来描述这一部分可能更好。默认情况下,Silence检查不会在Dumper面板中显示,但如果您想了解为什么您的切换没有按预期工作,则可以启用此功能。
要启用此功能,只需进行一个简单的步骤,将Type::Silence
添加到Dumper::$additionalTypes
数组中。
Dumper::$additionalTypes[] = Type::Silence; // (1) // code Dumper::$additionalTypes = []; // (2)
-
未来的Silence检查将在Dumper面板中显示。
-
并且此之后的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)
-
设置自定义标签以在Dumper面板中显示。
-
设置Dumper面板中日志条目的自定义颜色。
-
这不会显示,因为Silence的原因
-
每次调用此函数时都会添加一个紫色条目,标签为Do Test This。