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