tobinfree/hydrator

通过特性实现的简单 hydration 机制

v0.5.0 2022-12-08 09:18 UTC

This package is auto-updated.

Last update: 2024-09-08 13:27:10 UTC


README

简单的 hydration 机制。使用 PHP 特性,不会阻塞类的继承。

变更日志

  • 0.1.0
    • 初始版本
  • 0.2.0
    • 添加对所有父类属性的支持
  • 0.3.0
    • 添加 null 属性过滤器
  • 0.4.0
    • 添加布尔获取器 "is" 支持
  • 0.5.0
    • 更改所需 PHP 版本为 PHP 8.1
    • 使用 Attribute 而不是 PHP doc 进行注解
    • 修复从父类检测获取器和设置器

安装

composer require tobinfree/hydrator

使用方法

在你的类中添加 trait

use ToBinFree\Hydrator\Hydrator;

Class User 
{
    use Hydrator;

    private int $id;

    private string $name;

    private string $email;
    ...
}
  

Hydrator 会搜索类属性的所有访问器和修改器方法。如果未找到这些方法,则将直接使用属性。

你可以通过以下方式阻止直接使用属性并强制使用方法:

    $user = new User();
    $user->setMutatorOnly(true); // for set method usage only
    $user->setAccessorOnly(true); // for get method usage only

现在,你可以从你的对象生成一个数组

    var_dump($user->toArray());

你可以使用注解 @DataProperty 指定要生成的属性

use ToBinFree\Hydrator\Hydrator;

Class User 
{
    use Hydrator;
    
    private int $id

    #[DataProperty]
    private string $name;

    #[DataProperty]
    private string $email;
    ...
}
    var_dump($user->toArray(true));

并且你可以使用数组来 hydration 你的对象

    $user->hydrate([
        "name" => "Eric",
        "email" => "eric@email.com"
    ]);
    

默认情况下,包含 null 值属性。你可以使用 withNullValue 选项来过滤 null 属性

    $user->hydrate($array, true, false);
    var_dump($user->toArray(true, false));

许可证

此软件包受 MIT 许可证的保护。请参阅软件包中的完整许可证。