tanigami / specification
PHP中规范模式的基类。
v1.3.2
2023-06-06 06:26 UTC
Requires
- php: >=7.0
Requires (Dev)
- phpunit/phpunit: ^6.4
- squizlabs/php_codesniffer: ^3.1
README
PHP中规范模式的基类。除了典型的and、or和not规范外,还提出了anyOf、oneOf、noneOf规范。
此包基于carlosbuenosvinos/ddd的实现。
安装
$ composer require tanigami/specification
使用示例
<?php use Tanigami\Specification\Specification; use Tanigami\Specification\OneOfSpecification; class Order { public function isPaid() { return true; } public function isShipped() { return false; } public function isCancelled() { return false; } } class UnshippedOrderSpecification extends Specification { public function isSatisfiedBy($order): bool { return !$order->isShipped(); } } class PaidOrderSpecification extends Specification { public function isSatisfiedBy($order): bool { return $order->isPaid(); } } class CancelledOrderSpecification extends Specification { public function isSatisfiedBy($order): bool { return $order->isCancelled(); } } $paid = new PaidOrderSpecification; $unshipped = new UnshippedOrderSpecification; $cancelled = new CancelledOrderSpecification; $paid->and($unshipped)->isSatisfiedBy(new Order); // => true (new OneOfSpecification($paid, $unshipped, $cancelled))->isSatisfiedBy(new Order); // => true