maximecolin/satisfaction

DDD 规范模式的 PHP 实现

2.0.0 2020-03-30 14:37 UTC

This package is auto-updated.

Last update: 2024-08-29 04:03:20 UTC


README

Satisfaction 是 DDD 规范模式的 PHP 实现。

Build Status

目的

规范模式的目的是将领域规范编写为可重用的类,而不是在项目中为所有领域规则条件进行分发。

安装

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 的讲座。