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\Repository
NilPortugues\Foundation\Domain\Model\Repository\Contracts\PageRepository
NilPortugues\Foundation\Domain\Model\Repository\Contracts\ReadRepository
NilPortugues\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 许可证 的许可。