IpAddress::__invoke()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 4
nc 2
nop 2
dl 0
loc 8
ccs 5
cts 5
cp 1
crap 2
rs 10
c 0
b 0
f 0
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