Paket ini berisi segala macam informasi tentang negara:
info | item |
---|---|
pajak | 32 |
peta geometri | 248 |
peta topologi | 248 |
mata uang | 256 |
negara | 266 |
zona waktu | 423 |
perbatasan | 649 |
bendera | 1.570 |
negara bagian | 4.526 |
kota | 7.376 |
zona waktu kali | 81.153 |
Di antara banyak informasi lainnya, Anda dapat membuat peta negara:
Gunakan Komposer untuk menginstalnya:
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 ();
Haruskah keduanya kembali
€1
Membebani konfigurasi default:
use PragmaRX Countries Package Services Config ;
$ countries = new Countries ( new Config ([
' hydrate ' => [
' elements ' => [
' currencies ' => true ,
' flag ' => true ,
' timezones ' => true ,
],
],
]));
Paket ini tidak terikat dengan Laravel dan tidak memerlukan instalasi (kami memiliki jembatan untuk tujuan ini), tetapi memiliki Koleksi Laravel di intinya, semua metode dalam Koleksi tersedia, dengan cara ini Anda dapat melakukan hal-hal seperti memfilter , memetakan, mengurangi, mencari, mengurutkan, menolak, dan banyak lagi. Ini sebenarnya menggunakan Coollection, yang merupakan Koleksi Laravel dengan sintaks yang lancar, memungkinkan kita memiliki akses ke kunci array (dan nilai) sebagai properti objek.
Untuk memasukkan semua negara ke dalam basis data, Anda hanya perlu:
use PragmaRX Countries Package Countries ;
$ countries = new Countries ();
$ all = $ countries -> all ();
Untuk mendapatkan json Anda:
return $ countries -> toJson ();
Filter berdasarkan kunci dan nilai:
$ countries -> where ( ' name.common ' , ' Brazil ' );
Akan menemukan Brasil dengan nama umumnya, yaitu a
#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"
]
]
]
Atau alternatifnya Anda dapat memfilter seperti ini
$ countries -> whereNameCommon ( ' Brazil ' );
Dan, Anda bisa mendalami lebih dalam
$ countries -> where ( ' name.native.por.common ' , ' Brasil ' );
Atau cari berdasarkan domain tingkat teratas negara
$ countries -> where ( ' tld.0 ' , ' .ch ' );
Untuk mendapatkan
"name" => array:3 [▼
"common" => "Switzerland"
"official" => "Swiss Confederation"
"native" => array:4 [▶]
]
"tld" => array:1 [▼
0 => ".ch"
]
Dan gunakan hal-hal seperti memetik
$ countries -> where ( ' cca3 ' , ' USA ' )-> first ()-> hydrateStates ()-> states -> pluck ( ' name ' , ' postal ' )-> toArray ();
Untuk mendapatkan
" MA " => " Massachusetts "
" MN " => " Minnesota "
" MT " => " Montana "
" ND " => " North Dakota "
. . .
Paket ini menggunakan Koleksi yang dimodifikasi yang memungkinkan Anda mengakses properti dan metode sebagai objek:
$ countries -> where ( ' cca3 ' , ' FRA ' )
-> first ()
-> borders
-> first ()
-> name
-> official ;
Harus memberi
Principality of Andorra
Hidrasi perbatasan dinonaktifkan secara default, namun Anda dapat menghidrasi perbatasan dengan mudah dengan memanggil metode hidrat:
$ countries -> where ( ' name.common ' , ' United Kingdom ' )
-> hydrate ( ' borders ' )
-> first ()
-> borders
-> reverse ()
-> first ()
-> name
-> common ;
Harus kembali
Ireland
Untuk meningkatkan kinerja, hidrasi, yang diaktifkan secara default, dapat dinonaktifkan di sebagian besar properti negara, dan inilah cara Anda menghidrasi properti secara manual:
$ 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 ;
Itulah beberapa sifat yang dapat dihidrasi:
Beberapa properti disimpan secara berbeda dan oleh karena itu kita memerlukan aturan khusus untuk mengaksesnya, properti tersebut
ISO639_3
=> Kode bahasa 3 huruf.ISO4217
=> Kode mata uang 3 huruf.Anda tentu saja dapat mengaksesnya seperti properti lainnya
$ countries -> whereISO639_3 ( ' por ' )-> count ();
$ countries -> where ( ' ISO639_3 ' , ' por ' )-> count ();
Terkadang Anda ingin mengakses properti dengan nama berbeda, ini dapat dilakukan di pengaturan dengan cara ini
' maps ' => [
' lca3 ' => ' ISO639_3 '
]
Di sini kami mengikat kode pendek bahasa 3 huruf format ISO ke lca3
, yang merupakan kependekan dari language code alpha 3-letter
. Jadi sekarang kita dapat mengakses properti itu dengan
$ countries -> whereLca3 ( ' por ' );
Atau
$ 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 ();
Seharusnya memberi Anda 267 (atau lebih) negara seperti:
"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 ();
kembali
[
" Aruba " ,
" Afghanistan " ,
" Angola " ,
" Anguilla " ,
" Åland Islands " ,
... .
$ countries -> all ()-> pluck ( ' currencies ' )-> toArray ();
kembali
[
[
" 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 ' );
kembali
[
" AL " : " Alabama " ,
" AK " : " Alaska " ,
" AZ " : " Arizona " ,
" AR " : " Arkansas " ,
" CA " : " California " ,
... .
. . . .
$ countries -> where ( ' cca3 ' , ' FRA ' )
-> first ()
-> hydrate ( ' cities ' )
-> cities
-> paris
-> timezone ;
Harus kembali
Europe/Paris
$ countries -> where ( ' name.common ' , ' United States ' )-> first ()-> currencies ;
kembali
[{
" alternativeSigns " : [],
" ISO4217Code ": " USD ",
"ISO4217Number": " 840 ",
"sign": " $ " ,
" subunits " : 100 ,
" title ": " U.S. dollar",
....
$ countries -> currencies ();
kembali
[
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 ;
kembali
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 ;
kembali
" 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 "
]
]
Negara-negara menyediakan banyak sumber bendera yang berbeda, termasuk bendera SVG. Inilah cara Anda menggunakan salah satu sumber yang tersedia:
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 !!}
Anda dapat mempublikasikan konfigurasi dengan melakukan:
php artisan vendor:publish --provider=PragmaRX\Countries\ServiceProvider
Paket ini menggunakan beberapa paket sumber terbuka lainnya dan, hingga kami tidak membuat dokumentasi yang lebih baik, Anda dapat menemukan lebih banyak info tentang data di mledoze/negara dan cara menggunakannya di artikel Berita Laravel yang fantastis ini.
Silakan periksa bagian hak cipta untuk daftar lengkap paket yang digunakan oleh paket ini.
Tidak ada file data (JSON, gambar, ikon...) pada proyek ini yang dapat diperbarui secara manual. Kami akan menutup semua permintaan penarikan yang memerlukan pembaruan manual pada file tersebut akan ditutup, karena skrip pembaruan akan tetap menghapusnya.
Jika Anda menemukan sesuatu yang salah dengan data, Anda harus meminta manajer paket (sumber data yang tercantum dan di bagian hak cipta) untuk memperbaikinya, dan kemudian Anda dapat menjalankan sendiri skrip pembaruan untuk memperbaruinya dengan benar di repositori ini.
Paket ini dilengkapi dengan skrip update.php
, yang WAJIB Anda gunakan untuk memperbarui file data. Ini akan mengunduh semua info dari semua paket dan secara otomatis membangun .json
(dan beberapa lainnya juga menyukai .svg
). Inilah cara Anda melakukannya:
cd vendor/pragmarx/countries
composer install
php update.php
Dan menunggu sangat lama * (terkadang terlihat stuck padahal tidak) sampai selesai membangun kembali semuanya, lalu tinggal staging, commit, push semua file yang diregenerasi, dan draft PR baru.
Karena data ini tidak boleh diubah, panggilan secara otomatis disimpan dalam cache. Jika Anda ingin mengubah perilaku ini, Anda dapat mengedit file config/countries.php
setelah dipublikasikan.
Antonio Carlos Ribeiro Semua kontributor
Untuk membangun database dan hubungan antar negara, paket ini menggunakan sumber dan paket berikut:
Negara-negara dilisensikan berdasarkan Lisensi 3-Klausul BSD - lihat file LICENSE
untuk rinciannya
Permintaan tarik dan masalah sangat diterima.