phpddd / 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
InMemoryRepository 示例
在/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()
公共函数 isFirst()
公共函数 isLast()
公共函数 hasNext()
public function pageSize()
public function pageNumber()
公共函数 totalPages()
公共函数 nextPageable()
public function sortings()
public function filters()
public function fields()
公共函数 previousPageable()
公共函数 totalElements()
公共函数 map(callable $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 许可证 下授权。