EmailRule   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Test Coverage

Coverage 90%

Importance

Changes 0
Metric Value
eloc 10
dl 0
loc 39
ccs 9
cts 10
cp 0.9
rs 10
c 0
b 0
f 0
wmc 6

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A validate() 0 10 5
1
<?php
2
3
/**
4
 * Bluz Framework Component
5
 *
6
 * @copyright Bluz PHP Team
7
 * @link      https://github.com/bluzphp/framework
8
 */
9
10
declare(strict_types=1);
11
12
namespace Bluz\Validator\Rule;
13
14
/**
15
 * Check for email
16
 *
17
 * @package Bluz\Validator\Rule
18
 */
19
class EmailRule extends AbstractRule
20
{
21
    /**
22
     * @var string error template
23
     */
24
    protected $description = 'must be a valid email address';
25
26
    /**
27
     * @var bool check DNS record flag
28
     */
29
    protected $checkDns;
30
31
    /**
32
     * Setup validation rule
33
     *
34
     * @param bool $checkDns
35
     */
36 17
    public function __construct(bool $checkDns = false)
37
    {
38 17
        $this->checkDns = $checkDns;
39 17
    }
40
41
    /**
42
     * Check input data
43
     *
44
     * @param  mixed $input
45
     *
46
     * @return bool
47
     */
48 17
    public function validate($input): bool
49
    {
50 17
        if (is_string($input) && filter_var($input, FILTER_VALIDATE_EMAIL)) {
51 6
            [, $domain] = explode('@', $input, 2);
52 6
            if ($this->checkDns) {
53
                return checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A');
54
            }
55 6
            return true;
56
        }
57 11
        return false;
58
    }
59
}
60