<?php namespace WPDesk\ShowDecision; class AndStrategy implements ShouldShowStrategy { /** * @var ShouldShowStrategy[] */ private array $conditions = []; public function __construct(ShouldShowStrategy $strategy) { $this->conditions[] = $strategy; } public function addCondition(ShouldShowStrategy $condition): self { $this->conditions[] = $condition; return $this; } public function shouldDisplay(): bool { foreach ($this->conditions as $condition) { if ( ! $condition->shouldDisplay()) { return false; } } return true; } }