ZipCode   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 8
lcom 1
cbo 2
dl 0
loc 44
c 0
b 0
f 0
rs 10

7 Methods

Rating   Name   Duplication   Size   Complexity  
A fromSpain() 0 4 1
A __construct() 0 4 1
A zipCode() 0 4 1
A equals() 0 4 1
A __toString() 0 4 1
A setZipCode() 0 7 1
A checkZipCodeIsCorrect() 0 6 2
1
<?php
2
3
/*
4
 * This file is part of the Shared Kernel library.
5
 *
6
 * Copyright (c) 2016-present LIN3S <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
declare(strict_types=1);
13
14
namespace LIN3S\SharedKernel\Domain\Model\ZipCode;
15
16
use Uvinum\ZipCode\Validator;
17
18
/**
19
 * @author Beñat Espiña <[email protected]>
20
 */
21
class ZipCode
22
{
23
    private $zipCode;
24
25
    public static function fromSpain($zipCode)
26
    {
27
        return new self($zipCode, 'ES');
28
    }
29
30
    public function __construct($zipCode, $iso)
31
    {
32
        $this->setZipCode($zipCode, $iso);
33
    }
34
35
    public function zipCode()
36
    {
37
        return $this->zipCode;
38
    }
39
40
    public function equals(self $zipCode)
41
    {
42
        return $this->zipCode() === $zipCode->zipCode();
43
    }
44
45
    public function __toString()
46
    {
47
        return (string) $this->zipCode();
48
    }
49
50
    private function setZipCode($zipCode, $iso)
51
    {
52
        $zipCode = (string) $zipCode;
53
54
        $this->checkZipCodeIsCorrect($zipCode, $iso);
55
        $this->zipCode = $zipCode;
56
    }
57
58
    private function checkZipCodeIsCorrect($zipCode, $iso)
59
    {
60
        if (!(new Validator())->validate($iso, $zipCode)) {
61
            throw new ZipCodeInvalidException($zipCode, $iso);
62
        }
63
    }
64
}
65