berbeflo/modify-dump

一个小型库,利用 PHP 8 的属性来修改对象的 var_dump 输出

0.5 2021-09-24 20:55 UTC

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() 方法。

2. 导航