Address::getLocality()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Ngtfkx\Laradeck\AddressGenerator;
4
5
6
class Address
7
{
8
    /**
9
     * @var string $locality Населенный пункт
10
     */
11
    protected $locality;
12
13
    /**
14
     * @var string $street Улица
15
     */
16
    protected $street;
17
18
    /**
19
     * @var string $building Номер дома
20
     */
21
    protected $building;
22
23
    /**
24
     * @var float $latitude Широта
25
     */
26
    protected $latitude;
27
28
    /**
29
     * @var float $longitude Долгота
30
     */
31
    protected $longitude;
32
33
    /**
34
     * Address constructor.
35
     * @param string $locality
36
     * @param string $street
37
     * @param string $building
38
     * @param float|null $latitude
39
     * @param float|null  $longitude
40
     */
41
    public function __construct($locality, $street, $building, $latitude = null, $longitude = null)
42
    {
43
        $this->locality = $locality;
44
        $this->street = $street;
45
        $this->building = $building;
46
        $this->latitude = $latitude;
47
        $this->longitude = $longitude;
48
    }
49
50
    /**
51
     * Получить полный адрес (нас. пункт, улица, номер дома)
52
     *
53
     * @return string
54
     */
55
    public function getFull(): string
56
    {
57
        $parts = [
58
            $this->getLocality(),
59
            $this->getStreet(),
60
            $this->getBuilding(),
61
        ];
62
63
        return $this->join($parts);
64
    }
65
66
    /**
67
     * Получить адрес внутри нас.пункта (только улица и номер дома)
68
     *
69
     * @return string
70
     */
71
    public function getInsideLocality(): string
72
    {
73
        $parts = [
74
            $this->getStreet(),
75
            $this->getBuilding(),
76
        ];
77
78
        return $this->join($parts);
79
    }
80
81
    /**
82
     * Получить название населенного пункта
83
     *
84
     * @return string
85
     */
86
    public function getLocality(): string
87
    {
88
        return $this->locality;
89
    }
90
91
    /**
92
     * Получить название улицы
93
     *
94
     * @return string
95
     */
96
    public function getStreet(): string
97
    {
98
        return $this->street;
99
    }
100
101
    /**
102
     * Получить номер дома
103
     *
104
     * @return string
105
     */
106
    public function getBuilding(): string
107
    {
108
        return $this->building;
109
    }
110
111
    /**
112
     * Получить широту точки на карте соответсвующую адресу
113
     *
114
     * @return float|null
115
     */
116
    public function getLatitude(): float
117
    {
118
        return $this->latitude;
119
    }
120
121
    /**
122
     * Получить долготу точки на карте соответсвующую адресу
123
     *
124
     * @return float|null
125
     */
126
    public function getLongitude(): float
127
    {
128
        return $this->longitude;
129
    }
130
131
    /**
132
     * Преобразовать адрес из частей в строку
133
     *
134
     * @param $parts
135
     * @return string
136
     */
137
    protected function join($parts): string {
138
        $address = implode(', ', $parts);
139
140
        return $address;
141
    }
142
}