Dieses Paket enthält alle möglichen Informationen über Länder:
Info | Artikel |
---|---|
Steuern | 32 |
Geometriekarten | 248 |
Topologiekarten | 248 |
Währungen | 256 |
Länder | 266 |
Zeitzonen | 423 |
Grenzen | 649 |
Flaggen | 1.570 |
Staaten | 4.526 |
Städte | 7.376 |
Zeitzonen Zeiten | 81.153 |
Neben vielen anderen Informationen können Sie Länderkarten zeichnen:
Verwenden Sie Composer, um es zu installieren:
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 ();
Sollten beide zurückkehren
€1
Überladen der Standardkonfiguration:
use PragmaRX Countries Package Services Config ;
$ countries = new Countries ( new Config ([
' hydrate ' => [
' elements ' => [
' currencies ' => true ,
' flag ' => true ,
' timezones ' => true ,
],
],
]));
Dieses Paket ist nicht an Laravel gebunden und erfordert keine Installation (wir haben eine Bridge für diesen Zweck), aber es enthält Laravel Collections im Kern, alle Methoden in Collections sind verfügbar, auf diese Weise können Sie Dinge wie Filter tun , zuordnen, reduzieren, suchen, sortieren, ablehnen und vieles mehr. Tatsächlich wird Coollection verwendet, eine Laravel-Sammlung mit einer fließenden Syntax, die uns den Zugriff auf Array-Schlüssel (und -Werte) als Objekteigenschaften ermöglicht.
Um alle Länder in die Datenbank aufzunehmen, müssen Sie nur Folgendes tun:
use PragmaRX Countries Package Countries ;
$ countries = new Countries ();
$ all = $ countries -> all ();
So erhalten Sie einen JSON:
return $ countries -> toJson ();
Nach Schlüsseln und Werten filtern:
$ countries -> where ( ' name.common ' , ' Brazil ' );
Brasilien wird unter seinem gebräuchlichen Namen gefunden, der a ist
#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"
]
]
]
Alternativ können Sie auch so filtern
$ countries -> whereNameCommon ( ' Brazil ' );
Und Sie können tiefer gehen
$ countries -> where ( ' name.native.por.common ' , ' Brasil ' );
Oder suchen Sie nach der Top-Level-Domain des Landes
$ countries -> where ( ' tld.0 ' , ' .ch ' );
Zu bekommen
"name" => array:3 [▼
"common" => "Switzerland"
"official" => "Swiss Confederation"
"native" => array:4 [▶]
]
"tld" => array:1 [▼
0 => ".ch"
]
Und verwenden Sie Dinge wie Zupfen
$ countries -> where ( ' cca3 ' , ' USA ' )-> first ()-> hydrateStates ()-> states -> pluck ( ' name ' , ' postal ' )-> toArray ();
Zu bekommen
" MA " => " Massachusetts "
" MN " => " Minnesota "
" MT " => " Montana "
" ND " => " North Dakota "
. . .
Das Paket verwendet eine modifizierte Sammlung, die Ihnen den Zugriff auf Eigenschaften und Methoden als Objekte ermöglicht:
$ countries -> where ( ' cca3 ' , ' FRA ' )
-> first ()
-> borders
-> first ()
-> name
-> official ;
Sollte geben
Principality of Andorra
Die Hydratisierung von Rändern ist standardmäßig deaktiviert, aber Sie können Ihre Ränder ganz einfach mit Feuchtigkeit versorgen, indem Sie die Hydrate-Methode aufrufen:
$ countries -> where ( ' name.common ' , ' United Kingdom ' )
-> hydrate ( ' borders ' )
-> first ()
-> borders
-> reverse ()
-> first ()
-> name
-> common ;
Sollte zurückkehren
Ireland
Um die Leistung zu verbessern, kann die Hydratation, die standardmäßig aktiviert ist, bei den meisten Landunterkünften deaktiviert werden. So können Sie Unterkünfte manuell mit Feuchtigkeit versorgen:
$ 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 ;
Dies sind einige der feuchtigkeitsspendenden Eigenschaften:
Einige Eigenschaften werden unterschiedlich gespeichert und wir benötigen daher spezielle Regeln für den Zugriff auf diese Eigenschaften
ISO639_3
=> Der 3-Buchstaben-Sprachcode.ISO4217
=> Der 3-Buchstaben-Währungscode.Sie können natürlich wie auf andere Immobilien auch darauf zugreifen
$ countries -> whereISO639_3 ( ' por ' )-> count ();
$ countries -> where ( ' ISO639_3 ' , ' por ' )-> count ();
Manchmal möchten Sie unter einem anderen Namen auf eine Eigenschaft zugreifen. Dies kann auf diese Weise in den Einstellungen erfolgen
' maps ' => [
' lca3 ' => ' ISO639_3 '
]
Hier binden wir das ISO-Format des 3-Buchstaben-Kurzcodes der Sprache an lca3
, was für language code alpha 3-letter
steht. Jetzt können wir auf das Grundstück zugreifen
$ countries -> whereLca3 ( ' por ' );
Oder
$ 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 ();
Sollte Ihnen 267 (oder so) Länder geben, wie zum Beispiel:
"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 ();
kehrt zurück
[
" Aruba " ,
" Afghanistan " ,
" Angola " ,
" Anguilla " ,
" Åland Islands " ,
... .
$ countries -> all ()-> pluck ( ' currencies ' )-> toArray ();
kehrt zurück
[
[
" 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 ' );
kehrt zurück
[
" AL " : " Alabama " ,
" AK " : " Alaska " ,
" AZ " : " Arizona " ,
" AR " : " Arkansas " ,
" CA " : " California " ,
... .
. . . .
$ countries -> where ( ' cca3 ' , ' FRA ' )
-> first ()
-> hydrate ( ' cities ' )
-> cities
-> paris
-> timezone ;
Sollte zurückkehren
Europe/Paris
$ countries -> where ( ' name.common ' , ' United States ' )-> first ()-> currencies ;
kehrt zurück
[{
" alternativeSigns " : [],
" ISO4217Code ": " USD ",
"ISO4217Number": " 840 ",
"sign": " $ " ,
" subunits " : 100 ,
" title ": " U.S. dollar",
....
$ countries -> currencies ();
kehrt zurück
[
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 ;
kehrt zurück
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 ;
kehrt zurück
" 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 "
]
]
Countries bietet viele verschiedene Flaggenquellen, einschließlich SVG-Flaggen. So nutzen Sie eine der verfügbaren Quellen:
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 !!}
Sie können die Konfiguration veröffentlichen, indem Sie Folgendes tun:
php artisan vendor:publish --provider=PragmaRX\Countries\ServiceProvider
Dieses Paket verwendet einige andere Open-Source-Pakete und bis wir keine bessere Dokumentation erstellen, finden Sie in diesem fantastischen Laravel News-Artikel weitere Informationen zu Daten zu mledoze/countries und deren Verwendung.
Eine vollständige Liste der von diesem Programm verwendeten Pakete finden Sie im Abschnitt „Copyright“.
In diesem Projekt können keine Datendateien (JSON, Bilder, Symbole usw.) manuell aktualisiert werden. Wir werden alle Pull-Anfragen schließen, die manuelle Aktualisierungen dieser Dateien erfordern , da das Aktualisierungsskript sie trotzdem löscht.
Wenn Sie feststellen, dass mit den Daten etwas nicht stimmt, müssen Sie bitte die Paketmanager (aufgelistete Datenquellen und im Abschnitt zum Urheberrecht) bitten, das Problem zu beheben. Anschließend können Sie selbst das Aktualisierungsskript ausführen, um sie in diesem Repository ordnungsgemäß zu aktualisieren.
Dieses Paket enthält das Skript update.php
, das Sie zum Aktualisieren der Datendateien verwenden MÜSSEN. Es lädt alle Informationen aus allen Paketen herunter und erstellt automatisch die .json
(und einige andere wie .svg
Dateien). So machen Sie es:
cd vendor/pragmarx/countries
composer install
php update.php
Und warten Sie sehr lange * (manchmal sieht es so aus, als ob es feststeckt, ist es aber nicht), bis alles neu erstellt wurde. Dann müssen Sie nur noch die Bereitstellung durchführen, festschreiben, alle neu generierten Dateien übertragen und eine neue PR entwerfen.
Da sich diese Daten nicht ändern sollen, werden Anrufe automatisch zwischengespeichert. Wenn Sie dieses Verhalten ändern möchten, können Sie die Datei config/countries.php
bearbeiten, sobald sie veröffentlicht ist.
Antonio Carlos Ribeiro Alle Mitwirkenden
Zum Aufbau der Länderdatenbank und der Länderbeziehungen nutzt dieses Paket die folgenden Quellen und Pakete:
Countries ist unter der BSD 3-Clause-Lizenz lizenziert – Einzelheiten finden Sie in der LICENSE
Datei
Pull-Requests und Issues sind mehr als willkommen.