-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathCountry.php
141 lines (126 loc) · 2.65 KB
/
Country.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<?php
namespace Inspirum\Balikobot\Model\Values;
class Country
{
/**
* Names
*
* @var array<string,string>
*/
private $names;
/**
* Alpha-2 country code
*
* @var string
*/
private $code;
/**
* Continent name
*
* @var string
*/
private $continent;
/**
* Phone prefixes
*
* @var array<string>
*/
private $phonePrefixes;
/**
* Currency code
*
* @var string
*/
private $currencyCode;
/**
* Country constructor
*
* @param array<string,string> $names
* @param string $code
* @param string $currencyCode
* @param array<string> $phonePrefixes
* @param string $continent
*/
public function __construct(
array $names,
string $code,
string $currencyCode,
array $phonePrefixes,
string $continent
) {
$this->names = $names;
$this->code = $code;
$this->currencyCode = $currencyCode;
$this->phonePrefixes = $phonePrefixes;
$this->continent = $continent;
}
/**
* @return array<string,string>
*/
public function getNames(): array
{
return $this->names;
}
/**
* @param string $locale
*
* @return string|null
*/
public function getName(string $locale): ?string
{
return $this->names[$locale] ?? null;
}
/**
* @return string
*/
public function getCode(): string
{
return $this->code;
}
/**
* @return string
*/
public function getContinent(): string
{
return $this->continent;
}
/**
* @return string
*/
public function getPhonePrefix(): string
{
return $this->phonePrefixes[0];
}
/**
* @return array<string>
*/
public function getPhonePrefixes(): array
{
return $this->phonePrefixes;
}
/**
* @return string
*/
public function getCurrencyCode(): string
{
return $this->currencyCode;
}
/**
* @param array<string,mixed> $data
*
* @return \Inspirum\Balikobot\Model\Values\Country
*/
public static function newInstanceFromData(array $data): self
{
return new self(
[
'cs' => $data['name_cz'],
'en' => $data['name_en'],
],
$data['iso_code'],
$data['currency'],
is_array($data['phone_prefix']) ? $data['phone_prefix'] : [$data['phone_prefix']],
$data['continent']
);
}
}