Chris@18: validations = $validations; Chris@18: $this->mode = $mode; Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: public function isValid($email, EmailLexer $emailLexer) Chris@18: { Chris@18: $result = true; Chris@18: $errors = []; Chris@18: foreach ($this->validations as $validation) { Chris@18: $emailLexer->reset(); Chris@18: $validationResult = $validation->isValid($email, $emailLexer); Chris@18: $result = $result && $validationResult; Chris@18: $this->warnings = array_merge($this->warnings, $validation->getWarnings()); Chris@18: $errors = $this->addNewError($validation->getError(), $errors); Chris@18: Chris@18: if ($this->shouldStop($result)) { Chris@18: break; Chris@18: } Chris@18: } Chris@18: Chris@18: if (!empty($errors)) { Chris@18: $this->error = new MultipleErrors($errors); Chris@18: } Chris@18: Chris@18: return $result; Chris@18: } Chris@18: Chris@18: private function addNewError($possibleError, array $errors) Chris@18: { Chris@18: if (null !== $possibleError) { Chris@18: $errors[] = $possibleError; Chris@18: } Chris@18: Chris@18: return $errors; Chris@18: } Chris@18: Chris@18: private function shouldStop($result) Chris@18: { Chris@18: return !$result && $this->mode === self::STOP_ON_ERROR; Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: public function getError() Chris@18: { Chris@18: return $this->error; Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: public function getWarnings() Chris@18: { Chris@18: return $this->warnings; Chris@18: } Chris@18: }