first = $first; $this->then = $then; } public function validate(string $name, $val): array { $firstFailures = $this->first->validate($name, $val); $thenFailures = []; if (empty($firstFailures)) { $thenFailures = $this->then->validate($name, $val); } return array_merge($firstFailures, $thenFailures); } }