rekalogika / reconstitutor
位于 Doctrine 事件之上的一层薄层,帮助你重新构造/填充你的实体。最常见的情况是处理文件上传,但也有许多其他用途。它允许你在简洁且表达性强的类中增强 Doctrine 的填充。
1.3.3
2024-09-21 05:56 UTC
Requires
- doctrine/orm: ^2.16 || ^3.0
- rekalogika/direct-property-access: ^1.1.2 || ^1.2
- symfony/config: ^6.0 || ^7.0
- symfony/dependency-injection: ^6.1 || ^7.0
- symfony/http-kernel: ^6.0 || ^7.0
Requires (Dev)
- doctrine/collections: ^2.2
- doctrine/doctrine-bundle: ^2.0
- phpstan/phpstan: ^1.12
- phpunit/phpunit: ^10.5
- psalm/plugin-phpunit: ^0.19.0
- psalm/plugin-symfony: ^5.0
- rector/rector: ^1.2
- symfony/debug-bundle: ^6.0 || ^7.0
- symfony/doctrine-bridge: ^6.0 || ^7.0
- symfony/framework-bundle: ^6.0 || ^7.0
- symfony/phpunit-bridge: ^6.0 || ^7.0
- symfony/uid: ^6.0 || ^7.0
- symfony/yaml: ^6.0 || ^7.0
- vimeo/psalm: ^5.26
This package is auto-updated.
Last update: 2024-09-21 13:27:39 UTC
README
这个库提供了一层薄层,位于 Doctrine 事件之上,帮助你重新构造/填充你的实体。它允许你在简洁且表达性强的类中增强 Doctrine 的填充。
在 Doctrine 从数据库中填充一个对象之后,这个框架让你控制填充 Doctrine 没有处理的其他属性,而不必处理 Doctrine 事件和 Unit of Work 的特殊性。然后,在 Doctrine 将更改持久化到数据库后,它也允许你对这些属性进行类似操作。
这类任务最常见的案例是处理文件上传,其中已经编写了许多专门的库。但还有许多其他情况
- 一个懒加载代理,通过 API 调用获取真实资源。
- 链接由不同对象管理器管理的对象,或非 Doctrine 实体。
现在我们通常称这个过程为 填充。 重新构造 是 Eric Evans 在 "领域驱动设计:在软件核心处理复杂性" 中使用的术语。
功能
- 在类中简单声明。你可以创建一个重新构造器类来处理特定实体类的重新构造,实现特定接口的实体,类层次结构中的实体,或具有特定 PHP 属性的实体。
- 我们的抽象类提供了
get()
和set()
方法作为便利。它们让你可以直接操作属性,绕过获取器和设置器。这是重新构造的最佳实践,因为它让你在获取器和设置器中有业务逻辑的自由。 get()
和set()
方法是到 Symfony 的PropertyAccessorInterface
的自定义实现的转发器。因此,你可以使用在PropertyAccessorInterface
中定义的相同异常。- 它具有我们认为的正确行为。它要求你的重新构造器仅在 Doctrine 成功保存对象后保存。它不依赖于 Doctrine 在
flush()
之前看到对象被标记为脏。即你的实体不需要修改 Doctrine 管理的属性(如$lastUpdated
)——只是为了确保正确的 Doctrine 事件被触发。
文档
许可证
MIT
贡献
问题和拉取请求应提交到 GitHub 存储库 rekalogika/reconstitutor。