IpAddress   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 30
ccs 8
cts 8
cp 1
rs 10
c 0
b 0
f 0
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 8 2
A __construct() 0 3 1
1
<?php
2
3
namespace Mbright\Validation\Rule\Validate;
4
5
class IpAddress implements ValidateRuleInterface
6
{
7
    /** @var mixed|null */
8
    protected $flags;
9
10
    /**
11
     * @param mixed $flags `FILTER_VALIDATE_IP` flags to pass to filter_var();
12
     * cf. <http://php.net/manual/en/filter.filters.flags.php>.
13
     */
14 153
    public function __construct($flags = null)
15
    {
16 153
        $this->flags = $flags;
17 153
    }
18
19
    /**
20
     * Validates that the value is an IP address.
21
     *
22
     * @param object $subject The subject to be filtered.
23
     * @param string $field The subject field name.
24
     *
25
     * @return bool True if valid, false if not.
26
     */
27 153
    public function __invoke($subject, string $field): bool
28
    {
29 153
        if ($this->flags === null) {
30 153
            $this->flags = FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6;
31
        }
32 153
        $value = $subject->$field;
33
34 153
        return filter_var($value, FILTER_VALIDATE_IP, $this->flags) !== false;
35
    }
36
}
37