yiisoft/hydrator

创建并填充对象,支持类型转换、映射和依赖解析。

1.5.0 2024-09-17 16:10 UTC

This package is auto-updated.

Last update: 2024-09-17 16:11:52 UTC


README

Yii

Yii Hydrator


Latest Stable Version Total Downloads Build status Code Coverage Mutation testing badge static analysis type-coverage psalm-level

该包提供了一种从一组原始数据创建和填充对象的方法。

特性包括

  • 支持任何可见性的属性;
  • 使用构造函数参数创建对象;
  • 使用提供的 PSR-11 兼容 DI 容器解析创建对象时的依赖关系;
  • 支持嵌套对象;
  • 支持映射;
  • 允许通过 PHP 属性进行精细调整填充过程。

要求

  • PHP 8.1 或更高版本。

安装

该包可以通过 Composer 安装

composer require yiisoft/hydrator

通用用法

填充现有对象

use Yiisoft\Hydrator\Hydrator;

$hydrator = new Hydrator();
$hydrator->hydrate($object, $data);

创建新对象并填充数据

use Yiisoft\Hydrator\Hydrator;

$hydrator = new Hydrator();
$object = $hydrator->create(MyClass::class, $data);

要向嵌套对象的构造函数传递参数,请使用嵌套数组或点表示法

final class Engine
{
    public function __construct(
        private string $name,
    ) {}
}

final class Car
{
    public function __construct(
        private string $name,
        private Engine $engine,
    ) {}
}

// nested array
$object = $hydrator->create(Car::class, [
    'name' => 'Ferrari',
    'engine' => [
        'name' => 'V8',
    ]
]);

// or dot-notation
$object = $hydrator->create(Car::class, [
    'name' => 'Ferrari',
    'engine.name' => 'V8',
]);

这将传递 name 构造函数参数给 Car 对象,并为 engine 参数创建一个新的 Engine 对象,将其构造函数的 name 参数传递为 V8

文档

如果您需要帮助或有问题,Yii 论坛 是一个不错的选择。您还可以查看其他 Yii 社区资源

许可

Yii Hydrator 是免费软件。它根据 BSD 许可证发布。有关更多信息,请参阅 LICENSE

Yii Software 维护。

支持项目

Open Collective

关注更新

Official website Twitter Telegram Facebook Slack