1 | <?php |
||
5 | class Countries implements CodesByName, \ArrayAccess, \Countable, \JsonSerializable |
||
6 | { |
||
7 | |||
8 | /** @var Country[] */ |
||
9 | protected $selectedCountries = []; |
||
10 | |||
11 | /** @var Country[] */ |
||
12 | protected $worldCountries = []; |
||
13 | |||
14 | private $worldCountriesRaw = [ |
||
15 | ['code' => self::ANDORRA, 'name' => 'Andorra'], |
||
16 | ['code' => self::UNITED_ARAB_EMIRATES, 'name' => 'United Arab Emirates'], |
||
17 | ['code' => self::AFGHANISTAN, 'name' => 'Afghanistan'], |
||
18 | ['code' => self::ANTIGUA_BARBUDA, 'name' => 'Antigua And Barbuda'], |
||
19 | ['code' => self::ANGUILLA, 'name' => 'Anguilla'], |
||
20 | ['code' => self::ALBANIA, 'name' => 'Albania'], |
||
21 | ['code' => self::ARMENIA, 'name' => 'Armenia'], |
||
22 | ['code' => self::NETHERLANDS_ANTILLES, 'name' => 'Netherlands Antilles'], |
||
23 | ['code' => self::ANGOLA, 'name' => 'Angola'], |
||
24 | ['code' => self::ANTARCTICA, 'name' => 'Antarctica'], |
||
25 | ['code' => self::ARGENTINA, 'name' => 'Argentina'], |
||
26 | ['code' => self::AMERICAN_SAMOA, 'name' => 'American Samoa'], |
||
27 | ['code' => self::AUSTRIA, 'name' => 'Austria'], |
||
28 | ['code' => self::AUSTRALIA, 'name' => 'Australia'], |
||
29 | ['code' => self::ARUBA, 'name' => 'Aruba'], |
||
30 | ['code' => self::ALAND_ISLANDS, 'name' => 'Aland Islands'], |
||
31 | ['code' => self::AZERBAIJAN, 'name' => 'Azerbaijan'], |
||
32 | ['code' => self::BOSNIA_HERZEGOVINA, 'name' => 'Bosnia And Herzegovina'], |
||
33 | ['code' => self::BARBADOS, 'name' => 'Barbados'], |
||
34 | ['code' => self::BANGLADESH, 'name' => 'Bangladesh'], |
||
35 | ['code' => self::BELGIUM, 'name' => 'Belgium'], |
||
36 | ['code' => self::BURKINA_FASO, 'name' => 'Burkina Faso'], |
||
37 | ['code' => self::BULGARIA, 'name' => 'Bulgaria'], |
||
38 | ['code' => self::BAHRAIN, 'name' => 'Bahrain'], |
||
39 | ['code' => self::BURUNDI, 'name' => 'Burundi'], |
||
40 | ['code' => self::BENIN, 'name' => 'Benin'], |
||
41 | ['code' => self::SAINT_BARTHELEMY, 'name' => 'Saint Barthelemy'], |
||
42 | ['code' => self::BERMUDA, 'name' => 'Bermuda'], |
||
43 | ['code' => self::BRUNEI_DARUSSALAM, 'name' => 'Brunei Darussalam'], |
||
44 | ['code' => self::BOLIVIA, 'name' => 'Bolivia'], |
||
45 | ['code' => self::BRAZIL, 'name' => 'Brazil'], |
||
46 | ['code' => self::BAHAMAS, 'name' => 'Bahamas'], |
||
47 | ['code' => self::BHUTAN, 'name' => 'Bhutan'], |
||
48 | ['code' => self::BOUVET_ISLAND, 'name' => 'Bouvet Island'], |
||
49 | ['code' => self::BOTSWANA, 'name' => 'Botswana'], |
||
50 | ['code' => self::BELARUS, 'name' => 'Belarus'], |
||
51 | ['code' => self::BELIZE, 'name' => 'Belize'], |
||
52 | ['code' => self::CANADA, 'name' => 'Canada'], |
||
53 | ['code' => self::COCOS_KEELING_ISLANDS, 'name' => 'Cocos (Keeling) Islands'], |
||
54 | ['code' => self::CONGO_DEMOCRATIC_REPUBLIC, 'name' => 'Congo, Democratic Republic'], |
||
55 | ['code' => self::CENTRAL_AFRICAN_REPUBLIC, 'name' => 'Central African Republic'], |
||
56 | ['code' => self::CONGO, 'name' => 'Congo'], |
||
57 | ['code' => self::SWITZERLAND, 'name' => 'Switzerland'], |
||
58 | ['code' => self::COTE_DIVOIRE, 'name' => 'Cote D\'Ivoire'], |
||
59 | ['code' => self::COOK_ISLANDS, 'name' => 'Cook Islands'], |
||
60 | ['code' => self::CHILE, 'name' => 'Chile'], |
||
61 | ['code' => self::CAMEROON, 'name' => 'Cameroon'], |
||
62 | ['code' => self::CHINA, 'name' => 'China'], |
||
63 | ['code' => self::COLOMBIA, 'name' => 'Colombia'], |
||
64 | ['code' => self::COSTA_RICA, 'name' => 'Costa Rica'], |
||
65 | ['code' => self::CUBA, 'name' => 'Cuba'], |
||
66 | ['code' => self::CAPE_VERDE, 'name' => 'Cape Verde'], |
||
67 | ['code' => self::CHRISTMAS_ISLAND, 'name' => 'Christmas Island'], |
||
68 | ['code' => self::CYPRUS, 'name' => 'Cyprus'], |
||
69 | ['code' => self::CZECH_REPUBLIC, 'name' => 'Czech Republic'], |
||
70 | ['code' => self::GERMANY, 'name' => 'Germany'], |
||
71 | ['code' => self::DJIBOUTI, 'name' => 'Djibouti'], |
||
72 | ['code' => self::DENMARK, 'name' => 'Denmark'], |
||
73 | ['code' => self::DOMINICA, 'name' => 'Dominica'], |
||
74 | ['code' => self::DOMINICAN_REPUBLIC, 'name' => 'Dominican Republic'], |
||
75 | ['code' => self::ALGERIA, 'name' => 'Algeria'], |
||
76 | ['code' => self::ECUADOR, 'name' => 'Ecuador'], |
||
77 | ['code' => self::ESTONIA, 'name' => 'Estonia'], |
||
78 | ['code' => self::EGYPT, 'name' => 'Egypt'], |
||
79 | ['code' => self::WESTERN_SAHARA, 'name' => 'Western Sahara'], |
||
80 | ['code' => self::ERITREA, 'name' => 'Eritrea'], |
||
81 | ['code' => self::SPAIN, 'name' => 'Spain'], |
||
82 | ['code' => self::ETHIOPIA, 'name' => 'Ethiopia'], |
||
83 | ['code' => self::FINLAND, 'name' => 'Finland'], |
||
84 | ['code' => self::FIJI, 'name' => 'Fiji'], |
||
85 | ['code' => self::FALKLAND_ISLANDS, 'name' => 'Falkland Islands (Malvinas)'], |
||
86 | ['code' => self::MICRONESIA, 'name' => 'Micronesia, Federated States Of'], |
||
87 | ['code' => self::FAROE_ISLANDS, 'name' => 'Faroe Islands'], |
||
88 | ['code' => self::FRANCE, 'name' => 'France'], |
||
89 | ['code' => self::GABON, 'name' => 'Gabon'], |
||
90 | ['code' => self::UNITED_KINGDOM, 'name' => 'United Kingdom'], |
||
91 | ['code' => self::GRENADA, 'name' => 'Grenada'], |
||
92 | ['code' => self::GEORGIA, 'name' => 'Georgia'], |
||
93 | ['code' => self::FRENCH_GUIANA, 'name' => 'French Guiana'], |
||
94 | ['code' => self::GUERNSEY, 'name' => 'Guernsey'], |
||
95 | ['code' => self::GHANA, 'name' => 'Ghana'], |
||
96 | ['code' => self::GIBRALTAR, 'name' => 'Gibraltar'], |
||
97 | ['code' => self::GREENLAND, 'name' => 'Greenland'], |
||
98 | ['code' => self::GAMBIA, 'name' => 'Gambia'], |
||
99 | ['code' => self::GUINEA, 'name' => 'Guinea'], |
||
100 | ['code' => self::GUADELOUPE, 'name' => 'Guadeloupe'], |
||
101 | ['code' => self::EQUATORIAL_GUINEA, 'name' => 'Equatorial Guinea'], |
||
102 | ['code' => self::GREECE, 'name' => 'Greece'], |
||
103 | ['code' => self::SOUTH_GEORGIA_SANDWICH, 'name' => 'South Georgia And Sandwich Isl.'], |
||
104 | ['code' => self::GUATEMALA, 'name' => 'Guatemala'], |
||
105 | ['code' => self::GUAM, 'name' => 'Guam'], |
||
106 | ['code' => self::GUINEA_BISSAU, 'name' => 'Guinea-Bissau'], |
||
107 | ['code' => self::GUYANA, 'name' => 'Guyana'], |
||
108 | ['code' => self::HONG_KONG, 'name' => 'Hong Kong'], |
||
109 | ['code' => self::HEARD_MCDONALD_ISLANDS, 'name' => 'Heard Island & Mcdonald Islands'], |
||
110 | ['code' => self::HONDURAS, 'name' => 'Honduras'], |
||
111 | ['code' => self::CROATIA, 'name' => 'Croatia'], |
||
112 | ['code' => self::HAITI, 'name' => 'Haiti'], |
||
113 | ['code' => self::HUNGARY, 'name' => 'Hungary'], |
||
114 | ['code' => self::INDONESIA, 'name' => 'Indonesia'], |
||
115 | ['code' => self::IRELAND, 'name' => 'Ireland'], |
||
116 | ['code' => self::ISRAEL, 'name' => 'Israel'], |
||
117 | ['code' => self::ISLE_OF_MAN, 'name' => 'Isle Of Man'], |
||
118 | ['code' => self::INDIA, 'name' => 'India'], |
||
119 | ['code' => self::BRITISH_INDIAN_OCEAN_TERRITORY, 'name' => 'British Indian Ocean Territory'], |
||
120 | ['code' => self::IRAQ, 'name' => 'Iraq'], |
||
121 | ['code' => self::IRAN, 'name' => 'Iran, Islamic Republic Of'], |
||
122 | ['code' => self::ICELAND, 'name' => 'Iceland'], |
||
123 | ['code' => self::ITALY, 'name' => 'Italy'], |
||
124 | ['code' => self::JERSEY, 'name' => 'Jersey'], |
||
125 | ['code' => self::JAMAICA, 'name' => 'Jamaica'], |
||
126 | ['code' => self::JORDAN, 'name' => 'Jordan'], |
||
127 | ['code' => self::JAPAN, 'name' => 'Japan'], |
||
128 | ['code' => self::KENYA, 'name' => 'Kenya'], |
||
129 | ['code' => self::KOSOVO, 'name' => 'Kosovo'], |
||
130 | ['code' => self::KYRGYZSTAN, 'name' => 'Kyrgyzstan'], |
||
131 | ['code' => self::CAMBODIA, 'name' => 'Cambodia'], |
||
132 | ['code' => self::KIRIBATI, 'name' => 'Kiribati'], |
||
133 | ['code' => self::COMOROS, 'name' => 'Comoros'], |
||
134 | ['code' => self::SAINT_KITTS_NEVIS, 'name' => 'Saint Kitts And Nevis'], |
||
135 | ['code' => self::KOREA, 'name' => 'Korea'], |
||
136 | ['code' => self::KUWAIT, 'name' => 'Kuwait'], |
||
137 | ['code' => self::CAYMAN_ISLANDS, 'name' => 'Cayman Islands'], |
||
138 | ['code' => self::KAZAKHSTAN, 'name' => 'Kazakhstan'], |
||
139 | ['code' => self::LAO, 'name' => 'Lao People\'s Democratic Republic'], |
||
140 | ['code' => self::LEBANON, 'name' => 'Lebanon'], |
||
141 | ['code' => self::SAINT_LUCIA, 'name' => 'Saint Lucia'], |
||
142 | ['code' => self::LIECHTENSTEIN, 'name' => 'Liechtenstein'], |
||
143 | ['code' => self::SRI_LANKA, 'name' => 'Sri Lanka'], |
||
144 | ['code' => self::LIBERIA, 'name' => 'Liberia'], |
||
145 | ['code' => self::LESOTHO, 'name' => 'Lesotho'], |
||
146 | ['code' => self::LITHUANIA, 'name' => 'Lithuania'], |
||
147 | ['code' => self::LUXEMBOURG, 'name' => 'Luxembourg'], |
||
148 | ['code' => self::LATVIA, 'name' => 'Latvia'], |
||
149 | ['code' => self::LIBYAN_ARAB_JAMAHIRIYA, 'name' => 'Libyan Arab Jamahiriya'], |
||
150 | ['code' => self::MOROCCO, 'name' => 'Morocco'], |
||
151 | ['code' => self::MONACO, 'name' => 'Monaco'], |
||
152 | ['code' => self::MOLDOVA, 'name' => 'Moldova'], |
||
153 | ['code' => self::MONTENEGRO, 'name' => 'Montenegro'], |
||
154 | ['code' => self::SAINT_MARTIN, 'name' => 'Saint Martin'], |
||
155 | ['code' => self::MADAGASCAR, 'name' => 'Madagascar'], |
||
156 | ['code' => self::MARSHALL_ISLANDS, 'name' => 'Marshall Islands'], |
||
157 | ['code' => self::MACEDONIA, 'name' => 'Macedonia'], |
||
158 | ['code' => self::MALI, 'name' => 'Mali'], |
||
159 | ['code' => self::MYANMAR, 'name' => 'Myanmar'], |
||
160 | ['code' => self::MONGOLIA, 'name' => 'Mongolia'], |
||
161 | ['code' => self::MACAO, 'name' => 'Macao'], |
||
162 | ['code' => self::NORTHERN_MARIANA_ISLANDS, 'name' => 'Northern Mariana Islands'], |
||
163 | ['code' => self::MARTINIQUE, 'name' => 'Martinique'], |
||
164 | ['code' => self::MAURITANIA, 'name' => 'Mauritania'], |
||
165 | ['code' => self::MONTSERRAT, 'name' => 'Montserrat'], |
||
166 | ['code' => self::MALTA, 'name' => 'Malta'], |
||
167 | ['code' => self::MAURITIUS, 'name' => 'Mauritius'], |
||
168 | ['code' => self::MALDIVES, 'name' => 'Maldives'], |
||
169 | ['code' => self::MALAWI, 'name' => 'Malawi'], |
||
170 | ['code' => self::MEXICO, 'name' => 'Mexico'], |
||
171 | ['code' => self::MALAYSIA, 'name' => 'Malaysia'], |
||
172 | ['code' => self::MOZAMBIQUE, 'name' => 'Mozambique'], |
||
173 | ['code' => self::NAMIBIA, 'name' => 'Namibia'], |
||
174 | ['code' => self::NEW_CALEDONIA, 'name' => 'New Caledonia'], |
||
175 | ['code' => self::NIGER, 'name' => 'Niger'], |
||
176 | ['code' => self::NORFOLK_ISLAND, 'name' => 'Norfolk Island'], |
||
177 | ['code' => self::NIGERIA, 'name' => 'Nigeria'], |
||
178 | ['code' => self::NICARAGUA, 'name' => 'Nicaragua'], |
||
179 | ['code' => self::NETHERLANDS, 'name' => 'Netherlands'], |
||
180 | ['code' => self::NORWAY, 'name' => 'Norway'], |
||
181 | ['code' => self::NEPAL, 'name' => 'Nepal'], |
||
182 | ['code' => self::NAURU, 'name' => 'Nauru'], |
||
183 | ['code' => self::NIUE, 'name' => 'Niue'], |
||
184 | ['code' => self::NEW_ZEALAND, 'name' => 'New Zealand'], |
||
185 | ['code' => self::OMAN, 'name' => 'Oman'], |
||
186 | ['code' => self::PANAMA, 'name' => 'Panama'], |
||
187 | ['code' => self::PERU, 'name' => 'Peru'], |
||
188 | ['code' => self::FRENCH_POLYNESIA, 'name' => 'French Polynesia'], |
||
189 | ['code' => self::PAPUA_NEW_GUINEA, 'name' => 'Papua New Guinea'], |
||
190 | ['code' => self::PHILIPPINES, 'name' => 'Philippines'], |
||
191 | ['code' => self::PAKISTAN, 'name' => 'Pakistan'], |
||
192 | ['code' => self::POLAND, 'name' => 'Poland'], |
||
193 | ['code' => self::SAINT_PIERRE_MIQUELON, 'name' => 'Saint Pierre And Miquelon'], |
||
194 | ['code' => self::PITCAIRN, 'name' => 'Pitcairn'], |
||
195 | ['code' => self::PUERTO_RICO, 'name' => 'Puerto Rico'], |
||
196 | ['code' => self::PALESTINIAN_TERRITORY_OCCUPIED, 'name' => 'Palestinian Territory, Occupied'], |
||
197 | ['code' => self::PORTUGAL, 'name' => 'Portugal'], |
||
198 | ['code' => self::PALAU, 'name' => 'Palau'], |
||
199 | ['code' => self::PARAGUAY, 'name' => 'Paraguay'], |
||
200 | ['code' => self::QATAR, 'name' => 'Qatar'], |
||
201 | ['code' => self::REUNION, 'name' => 'Reunion'], |
||
202 | ['code' => self::ROMANIA, 'name' => 'Romania'], |
||
203 | ['code' => self::SERBIA, 'name' => 'Serbia'], |
||
204 | ['code' => self::RUSSIAN_FEDERATION, 'name' => 'Russian Federation'], |
||
205 | ['code' => self::RWANDA, 'name' => 'Rwanda'], |
||
206 | ['code' => self::SAUDI_ARABIA, 'name' => 'Saudi Arabia'], |
||
207 | ['code' => self::SOLOMON_ISLANDS, 'name' => 'Solomon Islands'], |
||
208 | ['code' => self::SEYCHELLES, 'name' => 'Seychelles'], |
||
209 | ['code' => self::SUDAN, 'name' => 'Sudan'], |
||
210 | ['code' => self::SWEDEN, 'name' => 'Sweden'], |
||
211 | ['code' => self::SINGAPORE, 'name' => 'Singapore'], |
||
212 | ['code' => self::SAINT_HELENA, 'name' => 'Saint Helena'], |
||
213 | ['code' => self::SLOVENIA, 'name' => 'Slovenia'], |
||
214 | ['code' => self::SVALBARD_JAN_MAYEN, 'name' => 'Svalbard And Jan Mayen'], |
||
215 | ['code' => self::SLOVAKIA, 'name' => 'Slovakia'], |
||
216 | ['code' => self::SIERRA_LEONE, 'name' => 'Sierra Leone'], |
||
217 | ['code' => self::SAN_MARINO, 'name' => 'San Marino'], |
||
218 | ['code' => self::SENEGAL, 'name' => 'Senegal'], |
||
219 | ['code' => self::SOMALIA, 'name' => 'Somalia'], |
||
220 | ['code' => self::SURINAME, 'name' => 'Suriname'], |
||
221 | ['code' => self::SAO_TOME_PRINCIPE, 'name' => 'Sao Tome And Principe'], |
||
222 | ['code' => self::EL_SALVADOR, 'name' => 'El Salvador'], |
||
223 | ['code' => self::SYRIAN_ARAB_REPUBLIC, 'name' => 'Syrian Arab Republic'], |
||
224 | ['code' => self::SWAZILAND, 'name' => 'Swaziland'], |
||
225 | ['code' => self::TURKS_CAICOS_ISLANDS, 'name' => 'Turks And Caicos Islands'], |
||
226 | ['code' => self::CHAD, 'name' => 'Chad'], |
||
227 | ['code' => self::FRENCH_SOUTHERN_TERRITORIES, 'name' => 'French Southern Territories'], |
||
228 | ['code' => self::TOGO, 'name' => 'Togo'], |
||
229 | ['code' => self::THAILAND, 'name' => 'Thailand'], |
||
230 | ['code' => self::TAJIKISTAN, 'name' => 'Tajikistan'], |
||
231 | ['code' => self::TOKELAU, 'name' => 'Tokelau'], |
||
232 | ['code' => self::TIMOR_LESTE, 'name' => 'Timor-Leste'], |
||
233 | ['code' => self::TURKMENISTAN, 'name' => 'Turkmenistan'], |
||
234 | ['code' => self::TUNISIA, 'name' => 'Tunisia'], |
||
235 | ['code' => self::TONGA, 'name' => 'Tonga'], |
||
236 | ['code' => self::TURKEY, 'name' => 'Turkey'], |
||
237 | ['code' => self::TRINIDAD_TOBAGO, 'name' => 'Trinidad And Tobago'], |
||
238 | ['code' => self::TUVALU, 'name' => 'Tuvalu'], |
||
239 | ['code' => self::TAIWAN, 'name' => 'Taiwan'], |
||
240 | ['code' => self::TANZANIA, 'name' => 'Tanzania'], |
||
241 | ['code' => self::UKRAINE, 'name' => 'Ukraine'], |
||
242 | ['code' => self::UGANDA, 'name' => 'Uganda'], |
||
243 | ['code' => self::UNITED_STATES_OUTLYING_ISLANDS, 'name' => 'United States Outlying Islands'], |
||
244 | ['code' => self::UNITED_STATES, 'name' => 'United States'], |
||
245 | ['code' => self::URUGUAY, 'name' => 'Uruguay'], |
||
246 | ['code' => self::UZBEKISTAN, 'name' => 'Uzbekistan'], |
||
247 | ['code' => self::HOLY_SEE_VATICAN_CITY_STATE, 'name' => 'Holy See (Vatican City State)'], |
||
248 | ['code' => self::SAINT_VINCENT_GRENADINES, 'name' => 'Saint Vincent And Grenadines'], |
||
249 | ['code' => self::VENEZUELA, 'name' => 'Venezuela'], |
||
250 | ['code' => self::VIRGIN_ISLANDS_BRITISH, 'name' => 'Virgin Islands, British'], |
||
251 | ['code' => self::VIRGIN_ISLANDS_US, 'name' => 'Virgin Islands, U.S.'], |
||
252 | ['code' => self::VIET_NAM, 'name' => 'Viet Nam'], |
||
253 | ['code' => self::VANUATU, 'name' => 'Vanuatu'], |
||
254 | ['code' => self::WALLIS_FUTUNA, 'name' => 'Wallis And Futuna'], |
||
255 | ['code' => self::SAMOA, 'name' => 'Samoa'], |
||
256 | ['code' => self::YEMEN, 'name' => 'Yemen'], |
||
257 | ['code' => self::MAYOTTE, 'name' => 'Mayotte'], |
||
258 | ['code' => self::SOUTH_AFRICA, 'name' => 'South Africa'], |
||
259 | ['code' => self::ZAMBIA, 'name' => 'Zambia'], |
||
260 | ['code' => self::ZIMBABWE, 'name' => 'Zimbabwe'], |
||
261 | ]; |
||
262 | |||
263 | /** |
||
264 | * @param array $items - array of country codes |
||
265 | */ |
||
266 | public function __construct($items = []) |
||
280 | |||
281 | /** |
||
282 | * @param mixed $offset country code |
||
283 | * @return boolean true on success or false on failure. |
||
284 | */ |
||
285 | public function offsetExists($offset) |
||
289 | |||
290 | /** |
||
291 | * @param string $offset country code |
||
292 | * @return Country|null |
||
293 | */ |
||
294 | public function offsetGet($offset) |
||
302 | |||
303 | /** |
||
304 | * @param string $offset country code |
||
305 | * @param Country $value country model |
||
306 | */ |
||
307 | public function offsetSet($offset, $value) |
||
311 | |||
312 | /** |
||
313 | * @param string $offset country code |
||
314 | */ |
||
315 | public function offsetUnset($offset) |
||
319 | |||
320 | /** |
||
321 | * @return int number of countries in the selection |
||
322 | */ |
||
323 | public function count() |
||
327 | |||
328 | /** |
||
329 | * @param $countryCodes |
||
330 | */ |
||
331 | protected function initSubset($countryCodes) |
||
337 | |||
338 | /** |
||
339 | * (PHP 5 >= 5.4.0)<br/> |
||
340 | * Specify data which should be serialized to JSON |
||
341 | * @link http://php.net/manual/en/jsonserializable.jsonserialize.php |
||
342 | * @return mixed data which can be serialized by <b>json_encode</b>, |
||
343 | * which is a value of any type other than a resource. |
||
344 | */ |
||
345 | public function jsonSerialize() |
||
349 | |||
350 | } |
||
351 |