anfischer/specification

一个包含基础类别的包,用于作为在PHP中实现规范模式(Specification pattern)的起点。

v0.1.0 2018-06-26 13:29 UTC

This package is auto-updated.

Last update: 2024-09-27 17:39:16 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

一个包含基础类别的包,用于作为在PHP中实现规范模式(Specification pattern)的起点(更多信息请见https://martinfowler.com.cn/apsupp/spec.pdf)。

此包包括典型的一组and(), or()和not()规范,以及allOf(), anyOf()和noneOf()规范。

安装

通过Composer

$ composer require anfischer/specification

使用方法

此包的一般使用可以从其测试用例中推断出来。
但是,使用单个规范(不)满足的一个非常基础和简化的示例可能如下所示

use Anfischer\Specification\Specification;

class Invoice
{
    public function isOverdue()
    {
        /* Logic snip */
        return true;
    }
}

class OverdueInvoiceSpecification extends Specification
{
    public function isSatisfiedBy($invoice): bool
    {
        return $invoice->isOverdue();
    }
}

$overdue = new OverdueInvoiceSpecification;

// Will return true
$overdue->isSatisfiedBy(new Invoice);

// Will return false
$overdue->not()->isSatisfiedBy(new Invoice);

变更日志

有关最近变更的更多信息,请参阅CHANGELOG

测试

$ composer test

贡献

请参阅CONTRIBUTINGCODE_OF_CONDUCT以获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件kontakt@season.dk联系,而不是使用问题跟踪器。

鸣谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。