maximecolin / satisfaction
DDD 规范模式的 PHP 实现
2.0.0
2020-03-30 14:37 UTC
Requires
- php: >=7.2.0
Requires (Dev)
- phpunit/phpunit: ^8.3
This package is auto-updated.
Last update: 2024-08-29 04:03:20 UTC
README
Satisfaction 是 DDD 规范模式的 PHP 实现。
目的
规范模式的目的是将领域规范编写为可重用的类,而不是在项目中为所有领域规则条件进行分发。
安装
composer require maximecolin/satisfaction
使用方法
简单示例
我的模型
class Article { public $published = false; public $publishedAt; }
我的规范
use Satisfaction\CompositeSpecification; class PublishedArticle extends CompositeSpecification { public function isSatisfiedBy($article) { return $article->published === true && $article->publishedAt <= new \DateTime(); } }
我想知道一篇文章是否已发布
$specicification = new PublishedArticle(); if ($specification->isSatisfiedBy($article)) { // Do something }
或,与,非
您可以使用“或”、“与”或“非”条件链式连接规范。
// If both foo and bar are satified if ((new FooSpecification())->andX(new BarSpecification())->isSatifiedBy($object)) { // Do something }
// If foo is satisfied or bar is not if ((new FooSpecification())->orX((new BarSpecification())->not())->isSatifiedBy($object)) { // Do something }
作者
Maxime Colin <www.maximecolin.fr>
许可证
请参阅 LICENCE 文件。
致谢
感谢 Jean-François Lépine 关于 DDD 的讲座。