Este paquete tiene todo tipo de información sobre países:
información | elementos |
---|---|
impuestos | 32 |
mapas de geometría | 248 |
mapas de topología | 248 |
monedas | 256 |
países | 266 |
zonas horarias | 423 |
fronteras | 649 |
banderas | 1.570 |
estados | 4.526 |
ciudades | 7.376 |
tiempos de zonas horarias | 81.153 |
Entre mucha otra información podrás trazar mapas de países:
Utilice Composer para instalarlo:
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 ();
¿Deberían ambos regresar?
€1
Sobrecargando la configuración predeterminada:
use PragmaRX Countries Package Services Config ;
$ countries = new Countries ( new Config ([
' hydrate ' => [
' elements ' => [
' currencies ' => true ,
' flag ' => true ,
' timezones ' => true ,
],
],
]));
Este paquete no está vinculado a Laravel y no requiere su instalación (tenemos un puente para este propósito), pero tiene Colecciones de Laravel en su núcleo, todos los métodos en Colecciones están disponibles, de esta manera puedes hacer cosas como filtrar , mapear, reducir, buscar, ordenar, rechazar y mucho más. En realidad, utiliza Coollection, que es Laravel Collections con una sintaxis fluida, lo que nos permite tener acceso a claves (y valores) de matriz como propiedades de objeto.
Para tener todos los países en la base de datos sólo tienes que:
use PragmaRX Countries Package Countries ;
$ countries = new Countries ();
$ all = $ countries -> all ();
Para obtener un json:
return $ countries -> toJson ();
Filtrar por claves y valores:
$ countries -> where ( ' name.common ' , ' Brazil ' );
Encontrará Brasil por su nombre común, que es 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"
]
]
]
O alternativamente puedes filtrar así
$ countries -> whereNameCommon ( ' Brazil ' );
Y puedes ir más profundo
$ countries -> where ( ' name.native.por.common ' , ' Brasil ' );
O busque por dominio de nivel superior del país
$ countries -> where ( ' tld.0 ' , ' .ch ' );
Llegar
"name" => array:3 [▼
"common" => "Switzerland"
"official" => "Swiss Confederation"
"native" => array:4 [▶]
]
"tld" => array:1 [▼
0 => ".ch"
]
Y usa cosas como arrancar
$ countries -> where ( ' cca3 ' , ' USA ' )-> first ()-> hydrateStates ()-> states -> pluck ( ' name ' , ' postal ' )-> toArray ();
Llegar
" MA " => " Massachusetts "
" MN " => " Minnesota "
" MT " => " Montana "
" ND " => " North Dakota "
. . .
El paquete utiliza una Colección modificada que le permite acceder a propiedades y métodos como objetos:
$ countries -> where ( ' cca3 ' , ' FRA ' )
-> first ()
-> borders
-> first ()
-> name
-> official ;
deberia dar
Principality of Andorra
La hidratación de los bordes está deshabilitada de forma predeterminada, pero puedes hidratar tus bordes fácilmente llamando al método hidrato:
$ countries -> where ( ' name.common ' , ' United Kingdom ' )
-> hydrate ( ' borders ' )
-> first ()
-> borders
-> reverse ()
-> first ()
-> name
-> common ;
debería regresar
Ireland
Para mejorar el rendimiento, la hidratación, que está habilitada de forma predeterminada, se puede desactivar en la mayoría de las propiedades rurales, y así es como se hidratan las propiedades manualmente:
$ 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 ;
Estas son algunas de las propiedades hidratables:
Algunas propiedades se almacenan de manera diferente y, por lo tanto, necesitamos reglas especiales para acceder a ellas; estas propiedades son
ISO639_3
=> El código de idioma de 3 letras.ISO4217
=> El código de moneda de 3 letras.Por supuesto, puedes acceder a ellos como a otras propiedades.
$ countries -> whereISO639_3 ( ' por ' )-> count ();
$ countries -> where ( ' ISO639_3 ' , ' por ' )-> count ();
A veces le gustaría acceder a una propiedad con un nombre diferente, esto se puede hacer en la configuración, de esta manera
' maps ' => [
' lca3 ' => ' ISO639_3 '
]
Aquí vinculamos el formato ISO del código corto de 3 letras del idioma a lca3
, que es la abreviatura del language code alpha 3-letter
. Entonces ahora podemos acceder a la propiedad por
$ countries -> whereLca3 ( ' por ' );
O
$ 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 ();
Debería darle 267 (más o menos) países como:
"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 ();
regresa
[
" Aruba " ,
" Afghanistan " ,
" Angola " ,
" Anguilla " ,
" Åland Islands " ,
... .
$ countries -> all ()-> pluck ( ' currencies ' )-> toArray ();
regresa
[
[
" 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 ' );
regresa
[
" AL " : " Alabama " ,
" AK " : " Alaska " ,
" AZ " : " Arizona " ,
" AR " : " Arkansas " ,
" CA " : " California " ,
... .
. . . .
$ countries -> where ( ' cca3 ' , ' FRA ' )
-> first ()
-> hydrate ( ' cities ' )
-> cities
-> paris
-> timezone ;
debería regresar
Europe/Paris
$ countries -> where ( ' name.common ' , ' United States ' )-> first ()-> currencies ;
regresa
[{
" alternativeSigns " : [],
" ISO4217Code ": " USD ",
"ISO4217Number": " 840 ",
"sign": " $ " ,
" subunits " : 100 ,
" title ": " U.S. dollar",
....
$ countries -> currencies ();
regresa
[
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 ;
regresa
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 ;
regresa
" 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 "
]
]
Países proporciona muchas fuentes de banderas diferentes, incluidas las banderas SVG. Así es como se utiliza una de las fuentes 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 !!}
Puede publicar la configuración haciendo:
php artisan vendor:publish --provider=PragmaRX\Countries\ServiceProvider
Este paquete utiliza algunos otros paquetes de código abierto y, hasta que no creemos una mejor documentación, puede encontrar más información sobre datos sobre mledoze/countries y cómo usarlos en este fantástico artículo de Laravel News.
Consulte la sección de derechos de autor para obtener una lista completa de los paquetes utilizados por este.
Ningún archivo de datos (JSON, imágenes, iconos...) de este proyecto se puede actualizar manualmente. Cerraremos todas las solicitudes de extracción que requieran actualizaciones manuales de esos archivos, porque el script de actualización los eliminará de todos modos.
Si encuentra algún problema con los datos, debe solicitar a los administradores de paquetes (fuentes de datos enumeradas y en la sección de derechos de autor) que los solucionen, y luego podrá ejecutar usted mismo el script de actualización para actualizarlos correctamente en este repositorio.
Este paquete viene con el script update.php
, que DEBE utilizar para actualizar los archivos de datos. Descargará toda la información de todos los paquetes y creará automáticamente el .json
(y algunos otros como .svg
también). Así es como lo haces:
cd vendor/pragmarx/countries
composer install
php update.php
Y espere mucho tiempo * (a veces parece atascado pero no lo está) hasta que termine de reconstruir todo, luego es solo cuestión de preparar, confirmar, enviar todos los archivos regenerados y redactar un nuevo PR.
Dado que se supone que estos datos no deben cambiar, las llamadas se almacenan en caché automáticamente. Si desea cambiar este comportamiento, puede editar el archivo config/countries.php
una vez que esté publicado.
Antonio Carlos Ribeiro Todos los contribuyentes
Para construir la base de datos y las relaciones de los países, este paquete utiliza esas fuentes y paquetes:
Los países tienen la licencia BSD de 3 cláusulas; consulte el archivo LICENSE
para obtener más detalles.
Las solicitudes de extracción y los problemas son más que bienvenidos.