Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
97.62% covered (success)
97.62%
41 / 42
83.33% covered (warning)
83.33%
5 / 6
CRAP
0.00% covered (danger)
0.00%
0 / 1
Country
97.62% covered (success)
97.62%
41 / 42
83.33% covered (warning)
83.33%
5 / 6
7
0.00% covered (danger)
0.00%
0 / 1
 getValidCountriesLabel
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 getValidCountriesValues
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 getValidIsoAplha2Codes
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getValidCountries
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
1 / 1
1
 isoCodes
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
1 / 1
1
 get
66.67% covered (warning)
66.67%
2 / 3
0.00% covered (danger)
0.00%
0 / 1
2.15
1<?php
2
3namespace App\Enums;
4
5use App\Traits\Enums\BaseEnum;
6
7enum Country: int
8{
9    use BaseEnum;
10
11    case afghanistan                            = 1;
12    case alandIslands                           = 2;
13    case albania                                = 3;
14    case algeria                                = 4;
15    case americanSamoa                          = 5;
16    case andorra                                = 6;
17    case angola                                 = 7;
18    case anguilla                               = 8;
19    case antarctica                             = 9;
20    case antiguaAndBarbuda                      = 10;
21    case argentina                              = 11;
22    case armenia                                = 12;
23    case aruba                                  = 13;
24    case australia                              = 14;
25    case austria                                = 15;
26    case azerbaijan                             = 16;
27    case bahrain                                = 17;
28    case bahamas                                = 18;
29    case bangladesh                             = 19;
30    case barbados                               = 20;
31    case belarus                                = 21;
32    case belgium                                = 22;
33    case belize                                 = 23;
34    case benin                                  = 24;
35    case bermuda                                = 25;
36    case bhutan                                 = 26;
37    case boliviaPlurinationalStateOf            = 27;
38    case bonaireSintEustatiusAndSaba            = 28;
39    case bosniaAndHerzegovina                   = 29;
40    case botswana                               = 30;
41    case bouvetIsland                           = 31;
42    case brazil                                 = 32;
43    case britishIndianOceanTerritory            = 33;
44    case bruneiDarussalam                       = 34;
45    case bulgaria                               = 35;
46    case burkinaFaso                            = 36;
47    case burundi                                = 37;
48    case cambodia                               = 38;
49    case cameroon                               = 39;
50    case canada                                 = 40;
51    case capeVerde                              = 41;
52    case caymanIslands                          = 42;
53    case centralAfricanRepublic                 = 43;
54    case chad                                   = 44;
55    case chile                                  = 45;
56    case china                                  = 46;
57    case christmasIsland                        = 47;
58    case cocosKeelingIslands                    = 48;
59    case colombia                               = 49;
60    case comoros                                = 50;
61    case congo                                  = 51;
62    case congoTheDemocraticRepublicOfThe        = 52;
63    case cookIslands                            = 53;
64    case costaRica                              = 54;
65    case coteDivoire                            = 55;
66    case croatia                                = 56;
67    case cuba                                   = 57;
68    case curacao                                = 58;
69    case cyprus                                 = 59;
70    case czechRepublic                          = 60;
71    case denmark                                = 61;
72    case djibouti                               = 62;
73    case dominica                               = 63;
74    case dominicanRepublic                      = 64;
75    case ecuador                                = 65;
76    case egypt                                  = 66;
77    case elSalvador                             = 67;
78    case equatorialGuinea                       = 68;
79    case eritrea                                = 69;
80    case estonia                                = 70;
81    case ethiopia                               = 71;
82    case falklandIslandsMalvinas                = 72;
83    case faroeIslands                           = 73;
84    case fiji                                   = 74;
85    case finland                                = 75;
86    case france                                 = 76;
87    case frenchGuiana                           = 77;
88    case frenchPolynesia                        = 78;
89    case frenchSouthernTerritories              = 79;
90    case gabon                                  = 80;
91    case gambia                                 = 81;
92    case georgia                                = 82;
93    case germany                                = 83;
94    case ghana                                  = 84;
95    case gibraltar                              = 85;
96    case greece                                 = 86;
97    case greenland                              = 87;
98    case grenada                                = 88;
99    case guadeloupe                             = 89;
100    case guam                                   = 90;
101    case guatemala                              = 91;
102    case guernsey                               = 92;
103    case guinea                                 = 93;
104    case guineaBissau                           = 94;
105    case guyana                                 = 95;
106    case haiti                                  = 96;
107    case heardIslandAndMcdonaldIslands          = 97;
108    case holySeeVaticanCityState                = 98;
109    case honduras                               = 99;
110    case hongKong                               = 100;
111    case hungary                                = 101;
112    case iceland                                = 102;
113    case india                                  = 103;
114    case indonesia                              = 104;
115    case iranIslamicRepublicOf                  = 105;
116    case iraq                                   = 106;
117    case ireland                                = 107;
118    case isleOfMan                              = 108;
119    case israel                                 = 109;
120    case italy                                  = 110;
121    case jamaica                                = 111;
122    case japan                                  = 112;
123    case jersey                                 = 113;
124    case jordan                                 = 114;
125    case kazakhstan                             = 115;
126    case kenya                                  = 116;
127    case kiribati                               = 117;
128    case koreaDemocraticPeoplesRepublicOf       = 118;
129    case koreaRepublicOf                        = 119;
130    case kuwait                                 = 120;
131    case kyrgyzstan                             = 121;
132    case laoPeoplesDemocraticRepublic           = 122;
133    case latvia                                 = 123;
134    case lebanon                                = 124;
135    case lesotho                                = 125;
136    case liberia                                = 126;
137    case libya                                  = 127;
138    case liechtenstein                          = 128;
139    case lithuania                              = 129;
140    case luxembourg                             = 130;
141    case macao                                  = 131;
142    case macedoniaTheFormerYugoslavRepublicOf   = 132;
143    case madagascar                             = 133;
144    case malawi                                 = 134;
145    case malaysia                               = 135;
146    case maldives                               = 136;
147    case mali                                   = 137;
148    case malta                                  = 138;
149    case marshallIslands                        = 139;
150    case martinique                             = 140;
151    case mauritania                             = 141;
152    case mauritius                              = 142;
153    case mayotte                                = 143;
154    case mexico                                 = 144;
155    case micronesiaFederatedStatesOf            = 145;
156    case moldovaRepublicOf                      = 146;
157    case monaco                                 = 147;
158    case mongolia                               = 148;
159    case montenegro                             = 149;
160    case montserrat                             = 150;
161    case morocco                                = 151;
162    case mozambique                             = 152;
163    case myanmar                                = 153;
164    case namibia                                = 154;
165    case nauru                                  = 155;
166    case nepal                                  = 156;
167    case netherlands                            = 157;
168    case newCaledonia                           = 158;
169    case newZealand                             = 159;
170    case nicaragua                              = 160;
171    case niger                                  = 161;
172    case nigeria                                = 162;
173    case niue                                   = 163;
174    case norfolkIsland                          = 164;
175    case northernMarianaIslands                 = 165;
176    case norway                                 = 166;
177    case oman                                   = 167;
178    case pakistan                               = 168;
179    case palau                                  = 169;
180    case palestineStateOf                       = 170;
181    case panama                                 = 171;
182    case papuaNewGuinea                         = 172;
183    case paraguay                               = 173;
184    case peru                                   = 174;
185    case philippines                            = 175;
186    case pitcairn                               = 176;
187    case poland                                 = 177;
188    case portugal                               = 178;
189    case puertoRico                             = 179;
190    case qatar                                  = 180;
191    case reunion                                = 181;
192    case romania                                = 182;
193    case russianFederation                      = 183;
194    case rwanda                                 = 184;
195    case saintBarthelemy                        = 185;
196    case saintHelenaAscensionAndTristanDaCunha  = 186;
197    case saintKittsAndNevis                     = 187;
198    case saintLucia                             = 188;
199    case saintMartinFrenchPart                  = 189;
200    case saintPierreAndMiquelon                 = 190;
201    case saintVincentAndTheGrenadines           = 191;
202    case samoa                                  = 192;
203    case sanMarino                              = 193;
204    case saoTomeAndPrincipe                     = 194;
205    case saudiArabia                            = 195;
206    case senegal                                = 196;
207    case serbia                                 = 197;
208    case seychelles                             = 198;
209    case sierraLeone                            = 199;
210    case singapore                              = 200;
211    case sintMaartenDutchPart                   = 201;
212    case slovakia                               = 202;
213    case slovenia                               = 203;
214    case solomonIslands                         = 204;
215    case somalia                                = 205;
216    case southAfrica                            = 206;
217    case southGeorgiaAndTheSouthSandwichIslands = 207;
218    case southSudan                             = 208;
219    case spain                                  = 209;
220    case sriLanka                               = 210;
221    case sudan                                  = 211;
222    case suriname                               = 212;
223    case svalbardAndJanMayen                    = 213;
224    case swaziland                              = 214;
225    case sweden                                 = 215;
226    case switzerland                            = 216;
227    case syrianArabRepublic                     = 217;
228    case taiwanProvinceOfChina                  = 218;
229    case tajikistan                             = 219;
230    case tanzaniaUnitedRepublicOf               = 220;
231    case thailand                               = 221;
232    case timorLeste                             = 222;
233    case togo                                   = 223;
234    case tokelau                                = 224;
235    case tonga                                  = 225;
236    case trinidadAndTobago                      = 226;
237    case tunisia                                = 227;
238    case turkey                                 = 228;
239    case turkmenistan                           = 229;
240    case turksAndCaicosIslands                  = 230;
241    case tuvalu                                 = 231;
242    case uganda                                 = 232;
243    case ukraine                                = 233;
244    case unitedArabEmirates                     = 234;
245    case unitedKingdom                          = 235;
246    case unitedStates                           = 236;
247    case unitedStatesMinorOutlyingIslands       = 237;
248    case uruguay                                = 238;
249    case uzbekistan                             = 239;
250    case vanuatu                                = 240;
251    case venezuelaBolivarianRepublicOf          = 241;
252    case vietNam                                = 242;
253    case virginIslandsBritish                   = 243;
254    case virginIslandsUs                        = 244;
255    case wallisAndFutuna                        = 245;
256    case westernSahara                          = 246;
257    case yemen                                  = 247;
258    case zambia                                 = 248;
259    case zimbabwe                               = 249;
260
261    /**
262     * Optionnal labels definition
263     */
264    private const LABELS = [
265        self::afghanistan->name                            => 'Afghanistan',
266        self::alandIslands->name                           => 'Ã…land Islands',
267        self::albania->name                                => 'Albania',
268        self::algeria->name                                => 'Algeria',
269        self::americanSamoa->name                          => 'American Samoa',
270        self::andorra->name                                => 'Andorra',
271        self::angola->name                                 => 'Angola',
272        self::anguilla->name                               => 'Anguilla',
273        self::antarctica->name                             => 'Antarctica',
274        self::antiguaAndBarbuda->name                      => 'Antigua and Barbuda',
275        self::argentina->name                              => 'Argentina',
276        self::armenia->name                                => 'Armenia',
277        self::aruba->name                                  => 'Aruba',
278        self::australia->name                              => 'Australia',
279        self::austria->name                                => 'Austria',
280        self::azerbaijan->name                             => 'Azerbaijan',
281        self::bahrain->name                                => 'Bahrain',
282        self::bahamas->name                                => 'Bahamas',
283        self::bangladesh->name                             => 'Bangladesh',
284        self::barbados->name                               => 'Barbados',
285        self::belarus->name                                => 'Belarus',
286        self::belgium->name                                => 'Belgium',
287        self::belize->name                                 => 'Belize',
288        self::benin->name                                  => 'Benin',
289        self::bermuda->name                                => 'Bermuda',
290        self::bhutan->name                                 => 'Bhutan',
291        self::boliviaPlurinationalStateOf->name            => 'Bolivia, Plurinational State of',
292        self::bonaireSintEustatiusAndSaba->name            => 'Bonaire, Sint Eustatius and Saba',
293        self::bosniaAndHerzegovina->name                   => 'Bosnia and Herzegovina',
294        self::botswana->name                               => 'Botswana',
295        self::bouvetIsland->name                           => 'Bouvet Island',
296        self::brazil->name                                 => 'Brazil',
297        self::britishIndianOceanTerritory->name            => 'British Indian Ocean Territory',
298        self::bruneiDarussalam->name                       => 'Brunei Darussalam',
299        self::bulgaria->name                               => 'Bulgaria',
300        self::burkinaFaso->name                            => 'Burkina Faso',
301        self::burundi->name                                => 'Burundi',
302        self::cambodia->name                               => 'Cambodia',
303        self::cameroon->name                               => 'Cameroon',
304        self::canada->name                                 => 'Canada',
305        self::capeVerde->name                              => 'Cape Verde',
306        self::caymanIslands->name                          => 'Cayman Islands',
307        self::centralAfricanRepublic->name                 => 'Central African Republic',
308        self::chad->name                                   => 'Chad',
309        self::chile->name                                  => 'Chile',
310        self::china->name                                  => 'China',
311        self::christmasIsland->name                        => 'Christmas Island',
312        self::cocosKeelingIslands->name                    => 'Cocos (Keeling) Islands',
313        self::colombia->name                               => 'Colombia',
314        self::comoros->name                                => 'Comoros',
315        self::congo->name                                  => 'Congo',
316        self::congoTheDemocraticRepublicOfThe->name        => 'Congo, the Democratic Republic of the',
317        self::cookIslands->name                            => 'Cook Islands',
318        self::costaRica->name                              => 'Costa Rica',
319        self::coteDivoire->name                            => 'Côte d\'Ivoire',
320        self::croatia->name                                => 'Croatia',
321        self::cuba->name                                   => 'Cuba',
322        self::curacao->name                                => 'Curaçao',
323        self::cyprus->name                                 => 'Cyprus',
324        self::czechRepublic->name                          => 'Czech Republic',
325        self::denmark->name                                => 'Denmark',
326        self::djibouti->name                               => 'Djibouti',
327        self::dominica->name                               => 'Dominica',
328        self::dominicanRepublic->name                      => 'Dominican Republic',
329        self::ecuador->name                                => 'Ecuador',
330        self::egypt->name                                  => 'Egypt',
331        self::elSalvador->name                             => 'El Salvador',
332        self::equatorialGuinea->name                       => 'Equatorial Guinea',
333        self::eritrea->name                                => 'Eritrea',
334        self::estonia->name                                => 'Estonia',
335        self::ethiopia->name                               => 'Ethiopia',
336        self::falklandIslandsMalvinas->name                => 'Falkland Islands (Malvinas)',
337        self::faroeIslands->name                           => 'Faroe Islands',
338        self::fiji->name                                   => 'Fiji',
339        self::finland->name                                => 'Finland',
340        self::france->name                                 => 'France',
341        self::frenchGuiana->name                           => 'French Guiana',
342        self::frenchPolynesia->name                        => 'French Polynesia',
343        self::frenchSouthernTerritories->name              => 'French Southern Territories',
344        self::gabon->name                                  => 'Gabon',
345        self::gambia->name                                 => 'Gambia',
346        self::georgia->name                                => 'Georgia',
347        self::germany->name                                => 'Germany',
348        self::ghana->name                                  => 'Ghana',
349        self::gibraltar->name                              => 'Gibraltar',
350        self::greece->name                                 => 'Greece',
351        self::greenland->name                              => 'Greenland',
352        self::grenada->name                                => 'Grenada',
353        self::guadeloupe->name                             => 'Guadeloupe',
354        self::guam->name                                   => 'Guam',
355        self::guatemala->name                              => 'Guatemala',
356        self::guernsey->name                               => 'Guernsey',
357        self::guinea->name                                 => 'Guinea',
358        self::guineaBissau->name                           => 'GuineaBissau',
359        self::guyana->name                                 => 'Guyana',
360        self::haiti->name                                  => 'Haiti',
361        self::heardIslandAndMcdonaldIslands->name          => 'Heard Island and McDonald Islands',
362        self::holySeeVaticanCityState->name                => 'Holy See (Vatican City State)',
363        self::honduras->name                               => 'Honduras',
364        self::hongKong->name                               => 'Hong Kong',
365        self::hungary->name                                => 'Hungary',
366        self::iceland->name                                => 'Iceland',
367        self::india->name                                  => 'India',
368        self::indonesia->name                              => 'Indonesia',
369        self::iranIslamicRepublicOf->name                  => 'Iran, Islamic Republic of',
370        self::iraq->name                                   => 'Iraq',
371        self::ireland->name                                => 'Ireland',
372        self::isleOfMan->name                              => 'Isle of Man',
373        self::israel->name                                 => 'Israel',
374        self::italy->name                                  => 'Italy',
375        self::jamaica->name                                => 'Jamaica',
376        self::japan->name                                  => 'Japan',
377        self::jersey->name                                 => 'Jersey',
378        self::jordan->name                                 => 'Jordan',
379        self::kazakhstan->name                             => 'Kazakhstan',
380        self::kenya->name                                  => 'Kenya',
381        self::kiribati->name                               => 'Kiribati',
382        self::koreaDemocraticPeoplesRepublicOf->name       => 'Korea, Democratic People\'s Republic of',
383        self::koreaRepublicOf->name                        => 'Korea, Republic of',
384        self::kuwait->name                                 => 'Kuwait',
385        self::kyrgyzstan->name                             => 'Kyrgyzstan',
386        self::laoPeoplesDemocraticRepublic->name           => 'Lao People\'s Democratic Republic',
387        self::latvia->name                                 => 'Latvia',
388        self::lebanon->name                                => 'Lebanon',
389        self::lesotho->name                                => 'Lesotho',
390        self::liberia->name                                => 'Liberia',
391        self::libya->name                                  => 'Libya',
392        self::liechtenstein->name                          => 'Liechtenstein',
393        self::lithuania->name                              => 'Lithuania',
394        self::luxembourg->name                             => 'Luxembourg',
395        self::macao->name                                  => 'Macao',
396        self::macedoniaTheFormerYugoslavRepublicOf->name   => 'Macedonia, the Former Yugoslav Republic of',
397        self::madagascar->name                             => 'Madagascar',
398        self::malawi->name                                 => 'Malawi',
399        self::malaysia->name                               => 'Malaysia',
400        self::maldives->name                               => 'Maldives',
401        self::mali->name                                   => 'Mali',
402        self::malta->name                                  => 'Malta',
403        self::marshallIslands->name                        => 'Marshall Islands',
404        self::martinique->name                             => 'Martinique',
405        self::mauritania->name                             => 'Mauritania',
406        self::mauritius->name                              => 'Mauritius',
407        self::mayotte->name                                => 'Mayotte',
408        self::mexico->name                                 => 'Mexico',
409        self::micronesiaFederatedStatesOf->name            => 'Micronesia, Federated States of',
410        self::moldovaRepublicOf->name                      => 'Moldova, Republic of',
411        self::monaco->name                                 => 'Monaco',
412        self::mongolia->name                               => 'Mongolia',
413        self::montenegro->name                             => 'Montenegro',
414        self::montserrat->name                             => 'Montserrat',
415        self::morocco->name                                => 'Morocco',
416        self::mozambique->name                             => 'Mozambique',
417        self::myanmar->name                                => 'Myanmar',
418        self::namibia->name                                => 'Namibia',
419        self::nauru->name                                  => 'Nauru',
420        self::nepal->name                                  => 'Nepal',
421        self::netherlands->name                            => 'Netherlands',
422        self::newCaledonia->name                           => 'New Caledonia',
423        self::newZealand->name                             => 'New Zealand',
424        self::nicaragua->name                              => 'Nicaragua',
425        self::niger->name                                  => 'Niger',
426        self::nigeria->name                                => 'Nigeria',
427        self::niue->name                                   => 'Niue',
428        self::norfolkIsland->name                          => 'Norfolk Island',
429        self::northernMarianaIslands->name                 => 'Northern Mariana Islands',
430        self::norway->name                                 => 'Norway',
431        self::oman->name                                   => 'Oman',
432        self::pakistan->name                               => 'Pakistan',
433        self::palau->name                                  => 'Palau',
434        self::palestineStateOf->name                       => 'Palestine, State of',
435        self::panama->name                                 => 'Panama',
436        self::papuaNewGuinea->name                         => 'Papua New Guinea',
437        self::paraguay->name                               => 'Paraguay',
438        self::peru->name                                   => 'Peru',
439        self::philippines->name                            => 'Philippines',
440        self::pitcairn->name                               => 'Pitcairn',
441        self::poland->name                                 => 'Poland',
442        self::portugal->name                               => 'Portugal',
443        self::puertoRico->name                             => 'Puerto Rico',
444        self::qatar->name                                  => 'Qatar',
445        self::reunion->name                                => 'Réunion',
446        self::romania->name                                => 'Romania',
447        self::russianFederation->name                      => 'Russian Federation',
448        self::rwanda->name                                 => 'Rwanda',
449        self::saintBarthelemy->name                        => 'Saint Barthélemy',
450        self::saintHelenaAscensionAndTristanDaCunha->name  => 'Saint Helena, Ascension and Tristan da Cunha',
451        self::saintKittsAndNevis->name                     => 'Saint Kitts and Nevis',
452        self::saintLucia->name                             => 'Saint Lucia',
453        self::saintMartinFrenchPart->name                  => 'Saint Martin (French part)',
454        self::saintPierreAndMiquelon->name                 => 'Saint Pierre and Miquelon',
455        self::saintVincentAndTheGrenadines->name           => 'Saint Vincent and the Grenadines',
456        self::samoa->name                                  => 'Samoa',
457        self::sanMarino->name                              => 'San Marino',
458        self::saoTomeAndPrincipe->name                     => 'Sao Tome and Principe',
459        self::saudiArabia->name                            => 'Saudi Arabia',
460        self::senegal->name                                => 'Senegal',
461        self::serbia->name                                 => 'Serbia',
462        self::seychelles->name                             => 'Seychelles',
463        self::sierraLeone->name                            => 'Sierra Leone',
464        self::singapore->name                              => 'Singapore',
465        self::sintMaartenDutchPart->name                   => 'Sint Maarten (Dutch part)',
466        self::slovakia->name                               => 'Slovakia',
467        self::slovenia->name                               => 'Slovenia',
468        self::solomonIslands->name                         => 'Solomon Islands',
469        self::somalia->name                                => 'Somalia',
470        self::southAfrica->name                            => 'South Africa',
471        self::southGeorgiaAndTheSouthSandwichIslands->name => 'South Georgia and the South Sandwich Islands',
472        self::southSudan->name                             => 'South Sudan',
473        self::spain->name                                  => 'Spain',
474        self::sriLanka->name                               => 'Sri Lanka',
475        self::sudan->name                                  => 'Sudan',
476        self::suriname->name                               => 'Suriname',
477        self::svalbardAndJanMayen->name                    => 'Svalbard and Jan Mayen',
478        self::swaziland->name                              => 'Swaziland',
479        self::sweden->name                                 => 'Sweden',
480        self::switzerland->name                            => 'Switzerland',
481        self::syrianArabRepublic->name                     => 'Syrian Arab Republic',
482        self::taiwanProvinceOfChina->name                  => 'Taiwan, Province of China',
483        self::tajikistan->name                             => 'Tajikistan',
484        self::tanzaniaUnitedRepublicOf->name               => 'Tanzania, United Republic of',
485        self::thailand->name                               => 'Thailand',
486        self::timorLeste->name                             => 'TimorLeste',
487        self::togo->name                                   => 'Togo',
488        self::tokelau->name                                => 'Tokelau',
489        self::tonga->name                                  => 'Tonga',
490        self::trinidadAndTobago->name                      => 'Trinidad and Tobago',
491        self::tunisia->name                                => 'Tunisia',
492        self::turkey->name                                 => 'Turkey',
493        self::turkmenistan->name                           => 'Turkmenistan',
494        self::turksAndCaicosIslands->name                  => 'Turks and Caicos Islands',
495        self::tuvalu->name                                 => 'Tuvalu',
496        self::uganda->name                                 => 'Uganda',
497        self::ukraine->name                                => 'Ukraine',
498        self::unitedArabEmirates->name                     => 'United Arab Emirates',
499        self::unitedKingdom->name                          => 'United Kingdom',
500        self::unitedStates->name                           => 'United States',
501        self::unitedStatesMinorOutlyingIslands->name       => 'United States Minor Outlying Islands',
502        self::uruguay->name                                => 'Uruguay',
503        self::uzbekistan->name                             => 'Uzbekistan',
504        self::vanuatu->name                                => 'Vanuatu',
505        self::venezuelaBolivarianRepublicOf->name          => 'Venezuela, Bolivarian Republic of',
506        self::vietNam->name                                => 'Viet Nam',
507        self::virginIslandsBritish->name                   => 'Virgin Islands, British',
508        self::virginIslandsUs->name                        => 'Virgin Islands, U.S.',
509        self::wallisAndFutuna->name                        => 'Wallis and Futuna',
510        self::westernSahara->name                          => 'Western Sahara',
511        self::yemen->name                                  => 'Yemen',
512        self::zambia->name                                 => 'Zambia',
513        self::zimbabwe->name                               => 'Zimbabwe'
514    ];
515
516    /**
517     * Get valid countries label.
518     *
519     * @return array<string>
520     */
521    public static function getValidCountriesLabel(): array
522    {
523        return collect(self::getValidCountries())->map(function (self $country) {
524            return $country->label();
525        })->all();
526    }
527
528    /**
529     * Get valid countries value.
530     *
531     * @return array<string|integer>
532     */
533    public static function getValidCountriesValues(): array
534    {
535        return collect(self::getValidCountries())->map(function (self $country) {
536            return $country->value();
537        })->all();
538    }
539
540    /**
541     * Get Alpha 2 ISO code of valid countries
542     *
543     * @return array
544     */
545    public static function getValidIsoAplha2Codes(): array
546    {
547        return \array_values(self::isoCodes());
548    }
549
550    /**
551     * Get valid countries
552     *
553     * @return array
554     */
555    public static function getValidCountries(): array
556    {
557        return [
558            Country::belgium,
559            Country::luxembourg,
560            Country::france,
561            Country::guadeloupe,
562            Country::martinique,
563            Country::frenchGuiana,
564            Country::reunion,
565            Country::saintPierreAndMiquelon,
566            Country::mayotte,
567            Country::saintBarthelemy,
568            Country::saintMartinFrenchPart,
569            Country::wallisAndFutuna,
570            Country::frenchPolynesia,
571            Country::newCaledonia
572        ];
573    }
574
575    /**
576     * Enum classes
577     *
578     * @return array
579     */
580    protected static function isoCodes(): array
581    {
582        return [
583            'france' => 'FR',
584            'belgium' => 'BE',
585            'luxembourg' => 'LU',
586            'guadeloupe' => 'GP',
587            'martinique' => 'MQ',
588            'frenchGuiana' => 'GF',
589            'reunion' => 'RE',
590            'saintPierreAndMiquelon' => 'PM',
591            'mayotte' => 'YT',
592            'saintBarthelemy' => 'BL',
593            'saintMartinFrenchPart' => 'MF',
594            'wallisAndFutuna' => 'WF',
595            'frenchPolynesia' => 'PF',
596            'newCaledonia' => 'NC',
597        ];
598    }
599
600    /**
601     * @param string $attribute
602     * @return integer|string|null
603     */
604    public function get(string $attribute): int|string|null
605    {
606        if ($attribute === 'iso') {
607            return $this->isoCodes()[$this->name] ?? null;
608        }
609        return $this->{$attribute};
610    }
611}