Builds a clear specification of business rules, where objects can be
checked against. The composite specification class has one method called
isSatisfiedBy
that returns either true or false depending on whether
the given object satisfies the specification.
You can also find this code on GitHub
Item.php
.. literalinclude:: Item.php :language: php :linenos:
Specification.php
.. literalinclude:: Specification.php :language: php :linenos:
OrSpecification.php
.. literalinclude:: OrSpecification.php :language: php :linenos:
PriceSpecification.php
.. literalinclude:: PriceSpecification.php :language: php :linenos:
AndSpecification.php
.. literalinclude:: AndSpecification.php :language: php :linenos:
NotSpecification.php
.. literalinclude:: NotSpecification.php :language: php :linenos:
Tests/SpecificationTest.php
.. literalinclude:: Tests/SpecificationTest.php :language: php :linenos: