1<?php 2 3namespace Egulias\EmailValidator\Validation; 4 5use Egulias\EmailValidator\EmailLexer; 6use Egulias\EmailValidator\EmailParser; 7use Egulias\EmailValidator\Exception\InvalidEmail; 8 9class RFCValidation implements EmailValidation 10{ 11 /** 12 * @var EmailParser|null 13 */ 14 private $parser; 15 16 /** 17 * @var array 18 */ 19 private $warnings = []; 20 21 /** 22 * @var InvalidEmail|null 23 */ 24 private $error; 25 26 public function isValid($email, EmailLexer $emailLexer) 27 { 28 $this->parser = new EmailParser($emailLexer); 29 try { 30 $this->parser->parse((string)$email); 31 } catch (InvalidEmail $invalid) { 32 $this->error = $invalid; 33 return false; 34 } 35 36 $this->warnings = $this->parser->getWarnings(); 37 return true; 38 } 39 40 public function getError() 41 { 42 return $this->error; 43 } 44 45 public function getWarnings() 46 { 47 return $this->warnings; 48 } 49} 50