compositephp / entity
PHP 8.1+ 智能实体,具有数据恢复功能
v0.1.12
2023-12-25 08:43 UTC
Requires
- php: ^8.1
- ramsey/uuid: ^4.0
Requires (Dev)
- doctrine/collections: ^2.1
- phpstan/phpstan: ^1.9.2
- phpunit/php-code-coverage: ^10.1
- phpunit/phpunit: ^10.1
README
Composite Entity 是一个为 PHP 8.1+ 设计的轻量级类,旨在高效且智能地处理数据。它专注于数据的序列化和反序列化,对数据库管理非常有帮助。
特性
- 将数据库行转换为严格类型对象,反之亦然。
- 简化数据库交互。
概述
要求
- PHP 8.1 或更高版本。
安装
使用 Composer 安装:
$ composer require compositephp/entity
支持的列类型
Composite Entity 支持广泛的数据类型
- 基本类型:字符串、整数、浮点数、布尔值、数组。
- 复杂类型:对象(stdClass)、DateTime/DateTimeImmutable、枚举。
- 高级类型:实体、实体列表或映射、集合(例如,Doctrine Collection)、实现 Composite\DB\Entity\CastableInterface 的自定义类。
快速示例
use Composite\Entity\AbstractEntity; class User extends AbstractEntity { public function __construct( public readonly int $id, public string $email, public ?string $name = null, public bool $is_test = false, public array $languages = [], public Status $status = Status::ACTIVE, public readonly \DateTimeImmutable $created_at = new \DateTimeImmutable(), ) {} } enum Status { case ACTIVE; case BLOCKED; }
序列化示例
$user = new User( id: 123, email: 'john@example.com', name: 'John', is_test: false, languages: ['en', 'fr'], status: Status::BLOCKED, ); var_export($user->toArray()); //will output array ( 'id' => 123, 'email' => 'user@example.com', 'name' => 'John', 'is_test' => false, 'languages' => '["en","fr"]', 'status' => 'BLOCKED', 'created_at' => '2022-01-01 11:22:33.000000', )
您还可以从数组反序列化(恢复)实体
$user = User::fromArray([ 'id' => 123, 'email' => 'user@example.com', 'name' => 'John', 'is_test' => false, 'languages' => '["en","fr"]', 'status' => 'BLOCKED', 'created_at' => '2022-01-01 11:22:33.000000', ]);
就这么多。不需要特殊的getter或setter,不需要额外的“行为”或额外的代码层。Composite Entity 自动处理所有操作,确保无缝的数据转换。
高级使用
自定义数据恢复
为了定制性能,实现自己的数据恢复器
- 创建一个实现
Composite\Entity\HydratorInterface
的类。 - 将
Composite\Entity\Attributes\Hydrator
属性添加到您的实体类中。
有用的属性
-
Composite\Entity\Attributes\SkipSerialization
排除数据恢复中的属性。
-
Composite\Entity\Attributes\ListOf
在属性内定义实体列表。
示例
use Composite\Entity\AbstractEntity; use Composite\Entity\Attributes\ListOf; class User extends AbstractEntity { public readonly int $id; public function __construct( public string $name, #[ListOf(Setting::class)] public array $settings = [], ) {} } class Setting extends AbstractEntity { public function __construct( public readonly string $name, public bool $isActive, ) {} }
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 LICENSE
。由 Composite PHP 维护。