rikbruil/specification

A PHP implementation of the Specification-pattern

Maintainers

Package info

github.com/rikbruil/specification

pkg:composer/rikbruil/specification

Statistics

Installs: 283 675

Dependents: 1

Suggesters: 0

Stars: 18

Open Issues: 0

0.9.4 2015-03-12 21:26 UTC

This package is not auto-updated.

Last update: 2026-03-15 01:48:31 UTC


README

Build Status Coverage Status Latest Stable Version License SensioLabsInsight

PHP implementation of the Specification pattern

Usage

$overDue        = new OverDueSpecification();
$noticeSent     = new NoticeSentSpecification();
$inCollection   = new InCollectionSpecification();
 
// example of specification pattern logic chaining
$sendToCollection = $overDue->andX($noticeSent)
                            ->not($inCollection);
 
foreach ($service->getInvoices() as $currentInvoice) {
    if (! $sendToCollection->isSatisfiedBy($currentInvoice)) {
        continue;
    }
    
    $currentInvoice->sendToCollection();
}

Requirements

  • PHP 5.3+

License

Specification is licensed under the MIT License - see the LICENSE file for details