nilportugues / repository
基础仓库的实现
Requires
- php: >=7.0
- nilportugues/serializer: ^1.1
Requires (Dev)
- friendsofphp/php-cs-fixer: 1.9.*
- phpunit/phpunit: ~4.8
README
通用实现和仓库及其内存实现的定义。
安装
使用Composer安装此包
$ composer require nilportugues/repository
内存实现
可以通过扩展提供的InMemoryRepository类轻松创建自定义仓库。
use NilPortugues\Foundation\Infrastructure\Model\Repository\InMemory\InMemoryRepository class MyInMemoryRepository extends InMemoryRepository { //... your custom implementation. }
实现可在此处查看这里。
基础InMemoryRepository实现了以下接口
NilPortugues\Foundation\Domain\Model\Repository\Contracts\RepositoryNilPortugues\Foundation\Domain\Model\Repository\Contracts\PageRepositoryNilPortugues\Foundation\Domain\Model\Repository\Contracts\ReadRepositoryNilPortugues\Foundation\Domain\Model\Repository\Contracts\WriteRepository
内存仓库示例
完整的实现示例可以在/example 目录中找到。
在示例中
- 颜色定义为实现了
Identity接口的类。 - 实现了
ColorRepository。如果找不到颜色,将抛出异常。 example.php文件中提供了如何过滤的示例。
基础类
与仓库交互需要使用以下类或实现接口的类。
-
NilPortugues\Foundation\Domain\Model\Repository\Fields
public function __construct(array $fields = [])public function add($field)public function get()
-
NilPortugues\Foundation\Domain\Model\Repository\Filter
public function filters()public function must()public function mustNot()public function should()public function clear()
-
NilPortugues\Foundation\Domain\Model\Repository\BaseFilter
public function notStartsWith($filterName, $value)public function notEndsWith($filterName, $value)public function notEmpty($filterName)public function empty($filterName)public function notNull($filterName)public function empty($filterName)public function startsWith($filterName, $value)public function endsWith($filterName, $value)public function equal($filterName, $value)public function notEqual($filterName, $value)public function includeGroup($filterName, array $value)public function notIncludeGroup($filterName, array $value)public function range($filterName, $firstValue, $secondValue)public function notRange($filterName, $firstValue, $secondValue)public function notContain($filterName, $value)public function contain($filterName, $value)public function beGreaterThanOrEqual($filterName, $value)public function beGreaterThan($filterName, $value)public function beLessThanOrEqual($filterName, $value)public function beLessThan($filterName, $value)public function clear()public function get()public function hasEmpty($filterName)//为了向后兼容,是 empty() 的别名。
-
NilPortugues\Foundation\Domain\Model\Repository\Order
public function __construct($direction)public function isDescending()public function isAscending()public function __toString()public function equals($object)public function direction()
-
NilPortugues\Foundation\Domain\Model\Repository\Pageable
public function __construct($pageNumber, $pageSize, SortInterface $sort = null, FilterInterface $filter = null, FieldsInterface $fields = null)public function offset()public function pageNumber()public function sortings()public function next()public function pageSize()public function previousOrFirst()public function hasPrevious()public function first()public function filters()public function fields()
-
NilPortugues\Foundation\Domain\Model\Repository\Page
public function __construct(array $elements, $totalElements, $pageNumber, $totalPages, SortInterface $sort = null, FilterInterface $filter = null, FieldsInterface $fields = null)public function content()public function hasPrevious()public function isFirst()公共函数 isLast()公共函数 hasNext()public function pageSize()public function pageNumber()公共函数 totalPages()公共函数 nextPageable()public function sortings()public function filters()public function fields()公共函数 previousPageable()公共函数 totalElements()公共函数 map(调用者 $converter)
-
NilPortugues\Foundation\Domain\Model\Repository\Sort
公共函数 __construct(array $properties = [], OrderInterface $order = null)公共函数 andSort(SortInterface $sort)公共函数 orders()公共函数 equals(SortInterface $sort)公共函数 orderFor($propertyName)公共函数 setOrderFor($propertyName, OrderInterface $order)公共函数 property($propertyName)
接口
-
NilPortugues\Foundation\Domain\Model\Repository\Contracts\Identity
公共函数 id()public function __toString()
-
NilPortugues\Foundation\Domain\Model\Repository\Contracts\Repository
公共函数 count(Filter $filter = null)公共函数 exists(Identity $id)
-
NilPortugues\Foundation\Domain\Model\Repository\Contracts\PageRepository
公共函数 findAll(Pageable $pageable = null)
-
NilPortugues\Foundation\Domain\Model\Repository\Contracts\ReadRepository
公共函数 find(Identity $id, Fields $fields = null)公共函数 findBy(Filter $filter = null, Sort $sort = null, Fields $fields = null)公共函数 findByDistinct(Fields $distinctFields, Filter $filter = null, Sort $sort = null, Fields $fields = null)
-
NilPortugues\Foundation\Domain\Model\Repository\Contracts\WriteRepository
公共函数 add($value)公共函数 addAll(array $values)公共函数 remove(Identity $id)公共函数 removeAll(Filter $filter = null)公共函数 transactional(callable $transaction)
质量
在命令行运行 PHPUnit 测试,请进入测试目录并运行 phpunit。
如果您注意到有不符合规范的地方,请通过 Pull Request 发送补丁。
贡献
欢迎对包的贡献!
支持
您可以通过以下方式之一与我联系
- 通过电子邮件 contact@nilportugues.com 发送给我
- 打开 问题
作者
许可证
代码库受 MIT 许可证 的许可。