berbeflo / modify-dump
一个小型库,利用 PHP 8 的属性来修改对象的 var_dump 输出
0.5
2021-09-24 20:55 UTC
Requires (Dev)
- php: >=8.0
- phpstan/phpstan: ^0.12.99
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.6
This package is auto-updated.
Last update: 2024-09-25 03:46:25 UTC
README
1. 修改 Dump
通过属性轻松修改 PHP 8 中引入的 var_dump
输出。
1.1. 动机
我只是想玩一下属性,而这个库是我首先想到的应用场景。
1.2. 工作原理
PHP 有许多所谓的魔术方法。这些是在特定情况下被调用的对象(或类)方法。你通常会在 __construct()
上遇到,它在对象实例化时被调用。
其中一个不太为人所知的是魔术方法 __debugInfo(),它在调用对象的 var_dump()
时被调用。
这个库提供了一个 Trait,它重写了 __debugInfo()
并基于类及其属性的 属性 进行了一些魔术操作。
1.3. 使用方法
1.3.1. 安装
composer require berbeflo/modify-dump
1.3.2. 第一个示例
使用 ModifiedDump
Trait 并告诉它要显示哪些属性
<?php declare(strict_types=1); use Berbeflo\ModifyDump\Attribute\Dump; use Berbeflo\ModifyDump\Trait\ModifiedDump; require_once('vendor/autoload.php'); class Test { use ModifiedDump; #[Dump] private string $a = "test"; protected int $b; #[Dump] public int | string $c = 5; } var_dump(new Test());
相应的输出
object(Test)#3 (3) {
["a"]=>
string(4) "test"
["b"]=>
object(Berbeflo\ModifyDump\State\Uninitialized)#9 (0) {
}
["c"]=>
int(5)
}
1.3.3. 进一步示例
请查看示例文件夹!
1.4. 功能
1.4.1. 过滤器
过滤器允许排除属性,例如,无需标记每个不应返回的属性即可排除私有属性。
默认过滤器 排除所有没有 Dump 属性的属性。
1.4.2. 格式化器
格式化器允许修改属性的显示内容。
1.4.3. 统计
统计允许向输出添加类/对象统计信息。
1.4.4. 可扩展性
很容易添加新的格式化器、过滤器和统计信息。
1.4.5. 不限于 var_dump
虽然提供的 trait 重写了 __debugInfo()
,但逻辑与该方法解耦。因此,很容易使用这个库来编写简单的 toArray()
方法。