twindigital/specification

An implementation of the Specification Pattern for Php7

1.0.0 2024-03-08 16:03 UTC

This package is not auto-updated.

Last update: 2024-09-27 13:08:05 UTC


README

Build Status Coverage Status Scrutinizer Code Quality

An implementation of the Specification pattern for Php7

Installation

Install using composer:

composer require stratadox/specification

Usage Sample

// The business logic
$allBoxes = CollectionOfBoxes::containing(
    Box::ofWeight(1),
    Box::ofWeight(2),
    Box::ofWeight(3),
    Box::ofWeight(5),
    Box::ofWeight(12),
    Box::ofWeight(26)
);
$weighBetween2and10 = AreHeavier::than(2)->and(AreLighter::than(10));
$this->assertEquals(
    CollectionOfBoxes::containing(
        Box::ofWeight(3),
        Box::ofWeight(5),
        Box::ofWeight(26)
    ),
    $allBoxes->that($weighBetween2and10->or(AreHeavier::than(20)))
);