Ce package contient toutes sortes d’informations sur les pays :
infos | articles |
---|---|
impôts | 32 |
cartes géométriques | 248 |
cartes topologiques | 248 |
devises | 256 |
pays | 266 |
fuseaux horaires | 423 |
frontières | 649 |
drapeaux | 1 570 |
états | 4 526 |
villes | 7 376 |
fuseaux horaires | 81 153 |
Parmi de nombreuses autres informations, vous pourrez tracer des cartes de pays :
Utilisez Composer pour l'installer :
composer require pragmarx/countries
use PragmaRX Countries Package Countries ;
$ countries = new Countries ();
echo $ countries -> where ( ' cca2 ' , ' IT ' )-> first ()-> hydrateCurrencies ()-> currencies -> EUR -> coins -> frequent -> first ();
// or calling it statically
echo Countries:: where ( ' cca2 ' , ' IT ' )-> first ()-> hydrateCurrencies ()-> currencies -> EUR -> coins -> frequent -> first ();
Si les deux reviennent
€1
Surcharge de la configuration par défaut :
use PragmaRX Countries Package Services Config ;
$ countries = new Countries ( new Config ([
' hydrate ' => [
' elements ' => [
' currencies ' => true ,
' flag ' => true ,
' timezones ' => true ,
],
],
]));
Ce package n'est pas lié à Laravel et ne nécessite pas son installation (nous avons un pont à cet effet), mais il a Laravel Collections en son cœur, toutes les méthodes dans Collections sont disponibles, de cette façon vous pouvez faire des choses comme filtrer , cartographier, réduire, rechercher, trier, rejeter et bien plus encore. En fait, il utilise Coollection, qui est des collections Laravel avec une syntaxe fluide, nous permettant d'avoir accès aux clés (et valeurs) du tableau en tant que propriétés d'objet.
Pour avoir tous les pays dans la base de données il suffit de :
use PragmaRX Countries Package Countries ;
$ countries = new Countries ();
$ all = $ countries -> all ();
Pour obtenir un json, vous :
return $ countries -> toJson ();
Filtrer par clés et valeurs :
$ countries -> where ( ' name.common ' , ' Brazil ' );
Trouvera le Brésil par son nom commun, qui est un
#items: array:22 [▼
"name" => array:3 [▼
"common" => "Brazil"
"official" => "Federative Republic of Brazil"
"native" => array:1 [▼
"por" => array:2 [▼
"official" => "República Federativa do Brasil"
"common" => "Brasil"
]
]
]
Ou bien vous pouvez filtrer comme ceci
$ countries -> whereNameCommon ( ' Brazil ' );
Et tu peux aller plus loin
$ countries -> where ( ' name.native.por.common ' , ' Brasil ' );
Ou effectuez une recherche par domaine de premier niveau du pays
$ countries -> where ( ' tld.0 ' , ' .ch ' );
Obtenir
"name" => array:3 [▼
"common" => "Switzerland"
"official" => "Swiss Confederation"
"native" => array:4 [▶]
]
"tld" => array:1 [▼
0 => ".ch"
]
Et utilise des choses comme plumer
$ countries -> where ( ' cca3 ' , ' USA ' )-> first ()-> hydrateStates ()-> states -> pluck ( ' name ' , ' postal ' )-> toArray ();
Obtenir
" MA " => " Massachusetts "
" MN " => " Minnesota "
" MT " => " Montana "
" ND " => " North Dakota "
. . .
Le package utilise une collection modifiée qui vous permet d'accéder aux propriétés et aux méthodes en tant qu'objets :
$ countries -> where ( ' cca3 ' , ' FRA ' )
-> first ()
-> borders
-> first ()
-> name
-> official ;
Devrait donner
Principality of Andorra
L'hydratation des bordures est désactivée par défaut, mais vous pouvez facilement hydrater vos bordures en appelant la méthode hydrate :
$ countries -> where ( ' name.common ' , ' United Kingdom ' )
-> hydrate ( ' borders ' )
-> first ()
-> borders
-> reverse ()
-> first ()
-> name
-> common ;
Devrait revenir
Ireland
Pour améliorer les performances, l'hydratation, qui est activée par défaut, peut être désactivée sur la plupart des propriétés de pays. Voici comment hydrater manuellement les propriétés :
$ countries -> where ( ' name.common ' , ' United States ' )-> first ()-> hydrate ( ' timezones ' )-> timezones -> first ()-> zone_name ;
$ countries -> where ( ' name.common ' , ' United States ' )-> first ()-> hydrate ( ' timezones ' )-> timezones -> first ()-> zone_name ;
Voici quelques-unes des propriétés hydratantes :
Certaines propriétés sont stockées différemment et nous avons donc besoin de règles spéciales pour y accéder, ces propriétés sont
ISO639_3
=> Le code de langue à 3 lettres.ISO4217
=> Le code devise à 3 lettres.Vous pouvez bien sûr y accéder comme aux autres propriétés
$ countries -> whereISO639_3 ( ' por ' )-> count ();
$ countries -> where ( ' ISO639_3 ' , ' por ' )-> count ();
Parfois, vous souhaitez accéder à une propriété sous un nom différent, cela peut être fait dans les paramètres, de cette façon
' maps ' => [
' lca3 ' => ' ISO639_3 '
]
Ici, nous lions le format ISO du code court de langue à 3 lettres à lca3
, qui est l'abréviation de language code alpha 3-letter
. Alors maintenant, nous pouvons accéder à la propriété par
$ countries -> whereLca3 ( ' por ' );
Ou
$ countries -> where ( ' lca3 ' , ' por ' );
app ( PragmaRX Countries Package Countries::class)
-> all ()
-> map ( function ( $ country ) {
$ commonName = $ country -> name -> common ;
$ languages = $ country -> languages ?? collect ();
$ language = $ languages -> keys ()-> first () ?? null ;
$ nativeNames = $ country -> name -> native ?? null ;
if (
filled ( $ language ) &&
filled ( $ nativeNames ) &&
filled ( $ nativeNames [ $ language ]) ?? null
) {
$ native = $ nativeNames [ $ language ][ ' common ' ] ?? null ;
}
if ( blank ( $ native ?? null ) && filled ( $ nativeNames )) {
$ native = $ nativeNames -> first ()[ ' common ' ] ?? null ;
}
$ native = $ native ?? $ commonName ;
if ( $ native !== $ commonName && filled ( $ native )) {
$ native = " $ native ( $ commonName ) " ;
}
return [ $ country -> cca2 => $ native ];
})
-> values ()
-> toArray ();
Cela devrait vous donner 267 (environ) pays comme :
"AW" => "Aruba"
"AF" => "افغانستان (Afghanistan)"
"AO" => "Angola"
"AI" => "Anguilla"
"AX" => "Åland (Åland Islands)"
"AL" => "Shqipëria (Albania)"
"AD" => "Andorra"
"AE" => "دولة الإمارات العربية المتحدة (United Arab Emirates)"
"AR" => "Argentina"
"AM" => "Հայաստան (Armenia)"
"AS" => "American Samoa"
"AQ" => "Antarctica"
"TF" => "Terres australes et antarctiques françaises (French Southern and Antarctic Lands)"
"AG" => "Antigua and Barbuda"
"AU" => "Australia"
"AT" => "Österreich (Austria)"
"AZ" => "Azərbaycan (Azerbaijan)"
"BI" => "Burundi"
"BE" => "Belgien (Belgium)"
"BJ" => "Bénin (Benin)"
"BF" => "Burkina Faso"
"BD" => "বাংলাদেশ (Bangladesh)"
"BG" => "България (Bulgaria)"
"BH" => "البحرين (Bahrain)"
"BS" => "Bahamas"
"BA" => "Bosna i Hercegovina (Bosnia and Herzegovina)"
"BL" => "Saint-Barthélemy (Saint Barthélemy)"
"SH" => "Saint Helena, Ascension and Tristan da Cunha"
"BY" => "Белару́сь (Belarus)"
"BZ" => "Belize"
"BM" => "Bermuda"
"BO" => "Wuliwya (Bolivia)"
"BQ" => "Caribisch Nederland (Caribbean Netherlands)"
"BR" => "Brasil (Brazil)"
"BB" => "Barbados"
"BN" => "Negara Brunei Darussalam (Brunei)"
"BT" => "འབྲུག་ཡུལ་ (Bhutan)"
"BV" => "Bouvetøya (Bouvet Island)"
"BW" => "Botswana"
"CF" => "République centrafricaine (Central African Republic)"
"CA" => "Canada"
"CC" => "Cocos (Keeling) Islands"
"CH" => "Suisse (Switzerland)"
"CL" => "Chile"
"CN" => "中国 (China)"
"CI" => "Côte d'Ivoire (Ivory Coast)"
"CM" => "Cameroon"
"CD" => "RD Congo (DR Congo)"
"CG" => "République du Congo (Republic of the Congo)"
"CK" => "Cook Islands"
"CO" => "Colombia"
"KM" => "القمر (Comoros)"
"CV" => "Cabo Verde (Cape Verde)"
...
$ countries -> all ()-> pluck ( ' name.common ' )-> toArray ();
retours
[
" Aruba " ,
" Afghanistan " ,
" Angola " ,
" Anguilla " ,
" Åland Islands " ,
... .
$ countries -> all ()-> pluck ( ' currencies ' )-> toArray ();
retours
[
[
" AWG " ,
],
[
" AFN " ,
],
[
" AOA " ,
],
[
" XCD " ,
],
[
" EUR " ,
],
... .
$ countries -> where ( ' name.common ' , ' Brazil ' )-> first ()-> hydrate ( ' currencies ' )-> currencies -> BRL -> units -> major -> symbol ;
$ countries -> where ( ' name.common ' , ' United States ' )
-> first ()
-> hydrateStates ()
-> states
-> sortBy ( ' name ' )
-> pluck ( ' name ' , ' postal ' );
retours
[
" AL " : " Alabama " ,
" AK " : " Alaska " ,
" AZ " : " Arizona " ,
" AR " : " Arkansas " ,
" CA " : " California " ,
... .
. . . .
$ countries -> where ( ' cca3 ' , ' FRA ' )
-> first ()
-> hydrate ( ' cities ' )
-> cities
-> paris
-> timezone ;
Devrait revenir
Europe/Paris
$ countries -> where ( ' name.common ' , ' United States ' )-> first ()-> currencies ;
retours
[{
" alternativeSigns " : [],
" ISO4217Code ": " USD ",
"ISO4217Number": " 840 ",
"sign": " $ " ,
" subunits " : 100 ,
" title ": " U.S. dollar",
....
$ countries -> currencies ();
retours
[
0 => " AED "
1 => " AFN "
2 => " ALL "
3 => " AMD "
4 => " ANG "
5 => " AOA "
6 => " ARS "
7 => " AUD "
8 => " AWG "
9 => " AZN "
10 => " BAM "
. . . .
return $ countries -> where ( ' name.common ' , ' United States ' )-> first ()-> timezone -> NC ;
retours
America/New_York
$ countries -> where ( ' name.common ' , ' Brazil ' )
-> first ()
-> hydrateTimezones ()
-> timezones
-> map ( function ( $ timezone ) {
return $ timezone -> zone_name ;
})-> values ()
-> unique ()
-> toArray ();
return $ countries -> where ( ' name.common ' , ' United States Virgin Islands ' )-> first ()-> hydrate ( ' timezones_times ' )-> timezones -> first ()-> times ;
retours
" times " => [
" abbreviation " => " LMT "
"dst" => " 0 "
"gmt_offset" => " - 14764 "
" time_start " => " -1825098837 "
"zone_id" => " 415 "
1 => [
" abbreviation " => " AST "
"dst" => " 0 "
"gmt_offset" => " - 14400 "
" time_start " => " -1825098836 "
"zone_id" => " 415 "
]
]
Les pays fournissent de nombreuses sources de drapeaux différentes, y compris les drapeaux SVG. Voici comment utiliser l'une des sources disponibles :
npm install --save-dev flag-icon-css
@import '~flag-icon-css/sass/flag-icon.scss';
$unitedStatesFlag =
$this->countries->where('cca3', 'USA')
->first()
->flag
->flag_icon;
{!! $unitedStatesFlag !!}
Vous pouvez publier la configuration en faisant :
php artisan vendor:publish --provider=PragmaRX\Countries\ServiceProvider
Ce package utilise d'autres packages open source et, jusqu'à ce que nous ne construisions pas une meilleure documentation, vous pouvez trouver plus d'informations sur les données sur mledoze/countries et comment les utiliser dans ce fantastique article de Laravel News.
Veuillez consulter la section copyright pour une liste complète des packages utilisés par celui-ci.
Aucun fichier de données (JSON, images, icônes...) sur ce projet ne peut être mis à jour manuellement. Nous fermerons toutes les demandes d'extraction nécessitant des mises à jour manuelles de ces fichiers, car le script de mise à jour les supprimera de toute façon.
Si vous trouvez quelque chose qui ne va pas avec les données, vous devez demander aux gestionnaires de paquets (sources de données répertoriées et dans la section des droits d'auteur) de les corriger, puis vous pouvez vous-même exécuter le script de mise à jour pour les mettre à jour correctement sur ce référentiel.
Ce package est livré avec le script update.php
, que vous DEVEZ utiliser pour mettre à jour les fichiers de données. Il téléchargera toutes les informations de tous les packages et construira automatiquement le .json
(et quelques autres comme .svg
également). Voici comment procéder :
cd vendor/pragmarx/countries
composer install
php update.php
Et attendez très longtemps * (parfois, cela semble bloqué mais ce n'est pas le cas) jusqu'à ce qu'il ait fini de tout reconstruire, il ne reste alors plus qu'une question de mise en scène, de validation, de transmission de tous les fichiers régénérés et de rédaction d'un nouveau PR.
Puisque ces données ne sont pas censées changer, les appels sont automatiquement mis en cache. Si vous souhaitez modifier ce comportement, vous pouvez éditer le fichier config/countries.php
une fois qu'il sera publié.
Antonio Carlos Ribeiro Tous les contributeurs
Pour construire la base de données et les relations des pays, ce package utilise ces sources et packages :
Countries est sous licence BSD à 3 clauses - voir le fichier LICENSE
pour plus de détails
Les demandes de tirage et les problèmes sont plus que bienvenus.