tobinfree / hydrator
通过特性实现的简单 hydration 机制
v0.5.0
2022-12-08 09:18 UTC
Requires
- php: ^8.1
Requires (Dev)
- phpunit/php-invoker: ^3.1.1
- phpunit/phpunit: ^9.5.26
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 许可证的保护。请参阅软件包中的完整许可证。