Completed
Push — master ( bd2bc3...a7d08c )
by Rick
8s
created

Phone::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
/**
3
 * Particle.
4
 *
5
 * @link      http://github.com/particle-php for the canonical source repository
6
 * @copyright Copyright (c) 2005-2015 Particle (http://particle-php.com)
7
 * @license   https://github.com/particle-php/validator/blob/master/LICENSE New BSD License
8
 */
9
namespace Particle\Validator\Rule;
10
11
use libphonenumber\NumberParseException;
12
use libphonenumber\PhoneNumberUtil;
13
use Particle\Validator\Rule;
14
15
/**
16
 * This Rule is for validating a phone number.
17
 *
18
 * @package Particle\Validator\Rule
19
 */
20
class Phone extends Rule
21
{
22
    /**
23
     * Constants that will be used when an invalid phone number is passed.
24
     */
25
    const INVALID_VALUE = 'Phone::INVALID_VALUE';
26
    const INVALID_FORMAT = 'Phone::INVALID_FORMAT';
27
28
    /**
29
     * The message templates which can be returned by this validator.
30
     *
31
     * @var array
32
     */
33
    protected $messageTemplates = [
34
        self::INVALID_VALUE => '{{ name }} must be a valid phone number',
35
        self::INVALID_FORMAT => '{{ name }} must have a valid phone number format',
36
    ];
37
38
    /**
39
     * @var string
40
     */
41
    protected $countryCode;
42
43
    /**
44
     * Construct the Phone validator.
45
     *
46
     * @param string $countryCode
47
     */
48 13
    public function __construct($countryCode)
49
    {
50 13
        $this->countryCode = $countryCode;
51 13
    }
52
53
    /**
54
     * Validates if $value is a valid phone number.
55
     *
56
     * @param mixed $value
57
     * @return bool
58
     */
59 13
    public function validate($value)
60
    {
61 13
        $phoneUtil = PhoneNumberUtil::getInstance();
62
63
        try {
64 13
            $numberProto = $phoneUtil->parse($value, $this->countryCode);
65 10
            if (!$phoneUtil->isValidNumberForRegion($numberProto, $this->countryCode)) {
66 4
                return $this->error(self::INVALID_VALUE);
67
            }
68 9
        } catch (NumberParseException $e) {
69 3
            return $this->error(self::INVALID_FORMAT);
70
        }
71
72 6
        return true;
73
    }
74
}
75