rekalogika / doctrine-collections-decorator
允许您轻松创建装饰器类,以动态修改Doctrine Collection对象的行为,包括在您的实体中使用的由Doctrine ORM使用的集合对象。
2.3.0
2024-03-31 05:39 UTC
Requires
- php: ^8.1
- doctrine/collections: ^2.0
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.5
- psalm/plugin-phpunit: ^0.18.4 || ^0.19
- symfony/phpunit-bridge: ^6.3 || ^7.0
- symfony/var-dumper: ^6.3 || ^7.0
- vimeo/psalm: ^5.15
This package is auto-updated.
Last update: 2024-08-31 00:31:49 UTC
README
允许您轻松创建装饰器类,以动态修改Doctrine Collection对象的行为,包括在您的实体中使用的由Doctrine ORM使用的集合对象。
动机
自定义集合类不会很快集成到Doctrine ORM中。因此,修改Doctrine集合行为的唯一方法是使用装饰器。然而,手动创建集合装饰器是一个繁琐的过程。
概述
扩展我们抽象类之一的装饰器类
use Doctrine\Common\Collections\Collection; use Rekalogika\Collections\Decorator\AbstractCollectionDecorator; /** * @extends AbstractCollectionDecorator<array-key,Book> */ class BookCollection extends AbstractCollectionDecorator { /** * @param Collection<array-key,Book> $collection */ public function __construct(private Collection $collection) { } protected function getWrapped(): Collection { return $this->collection; } // add and override methods here: // ... }
在实体中的使用
use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity()] class BookShelf { /** * @var Collection<array-key,Book> */ #[ORM\OneToMany(targetEntity: Book::class)] private Collection $books; public function __construct() { $this->books = new ArrayCollection(); } public function getBooks(): BookCollection { return new BookCollection($this->bookskkk); } }
文档
rekalogika.dev/doctrine-collections-decorator
许可证
MIT
贡献
问题和拉取请求应在GitHub仓库rekalogika/doctrine-collections-decorator中提交。