diff --git a/Behavioral/Specification/AndSpecification.php b/Behavioral/Specification/AndSpecification.php index c6a88ea..5a7d99c 100644 --- a/Behavioral/Specification/AndSpecification.php +++ b/Behavioral/Specification/AndSpecification.php @@ -17,14 +17,17 @@ class AndSpecification implements SpecificationInterface $this->specifications = $specifications; } + /** + * if at least one specification is false, return false, else return true. + */ public function isSatisfiedBy(Item $item): bool { - $satisfied = []; - foreach ($this->specifications as $specification) { - $satisfied[] = $specification->isSatisfiedBy($item); + if (!$specification->isSatisfiedBy($item)) { + return false; + } } - return !in_array(false, $satisfied); + return true; } } diff --git a/Behavioral/Specification/OrSpecification.php b/Behavioral/Specification/OrSpecification.php index 62a4e08..47faaaa 100644 --- a/Behavioral/Specification/OrSpecification.php +++ b/Behavioral/Specification/OrSpecification.php @@ -17,14 +17,16 @@ class OrSpecification implements SpecificationInterface $this->specifications = $specifications; } + /** + * if at least one specification is true, return true, else return false + */ public function isSatisfiedBy(Item $item): bool { - $satisfied = []; - foreach ($this->specifications as $specification) { - $satisfied[] = $specification->isSatisfiedBy($item); + if ($specification->isSatisfiedBy($item)) { + return true; + } } - - return in_array(true, $satisfied); + return false; } }