mirror of
https://github.com/DesignPatternsPHP/DesignPatternsPHP.git
synced 2025-06-27 19:53:32 +02:00
35 lines
755 B
PHP
35 lines
755 B
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace DesignPatterns\Behavioral\Specification;
|
|
|
|
class AndSpecification implements Specification
|
|
{
|
|
/**
|
|
* @var Specification[]
|
|
*/
|
|
private $specifications;
|
|
|
|
/**
|
|
* @param Specification[] ...$specifications
|
|
*/
|
|
public function __construct(Specification ...$specifications)
|
|
{
|
|
$this->specifications = $specifications;
|
|
}
|
|
|
|
/**
|
|
* if at least one specification is false, return false, else return true.
|
|
*/
|
|
public function isSatisfiedBy(Item $item): bool
|
|
{
|
|
foreach ($this->specifications as $specification) {
|
|
if (!$specification->isSatisfiedBy($item)) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|