該包包含有關國家/地區的各種資訊:
資訊 | 專案 |
---|---|
稅收 | 32 |
幾何圖 | 248 |
拓樸圖 | 248 |
貨幣 | 256 |
國家 | 266 |
時區 | 第423章 |
邊界 | 第649章 |
旗幟 | 1,570 |
州 | 4,526 |
城市 | 7,376 |
時區時間 | 81,153 |
在許多其他資訊中,您將能夠繪製國家地圖:
使用 Composer 來安裝它:
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 ();
應該都返回
€1
重載預設配置:
use PragmaRX Countries Package Services Config ;
$ countries = new Countries ( new Config ([
' hydrate ' => [
' elements ' => [
' currencies ' => true ,
' flag ' => true ,
' timezones ' => true ,
],
],
]));
這個套件沒有與Laravel 綁定,也不需要安裝它(我們有一個用於此目的的橋),但它的核心有Laravel Collections,Collections 中的所有方法都可用,這樣你就可以做過濾器之類的事情、映射、減少、搜尋、排序、拒絕等等。實際上,它使用 Coollection,這是具有流暢語法的 Laravel Collections,允許我們將數組鍵(和值)作為物件屬性進行存取。
要取得資料庫中的所有國家/地區,您只需:
use PragmaRX Countries Package Countries ;
$ countries = new Countries ();
$ all = $ countries -> all ();
若要取得 json,請執行以下操作:
return $ countries -> toJson ();
按鍵和值過濾:
$ countries -> where ( ' name.common ' , ' Brazil ' );
可以透過其通用名稱找到巴西,這是
#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"
]
]
]
或者你也可以這樣過濾
$ countries -> whereNameCommon ( ' Brazil ' );
而且,你可以更深入
$ countries -> where ( ' name.native.por.common ' , ' Brasil ' );
或按國家頂級域名搜尋
$ countries -> where ( ' tld.0 ' , ' .ch ' );
要得到
"name" => array:3 [▼
"common" => "Switzerland"
"official" => "Swiss Confederation"
"native" => array:4 [▶]
]
"tld" => array:1 [▼
0 => ".ch"
]
並使用諸如拔毛之類的東西
$ countries -> where ( ' cca3 ' , ' USA ' )-> first ()-> hydrateStates ()-> states -> pluck ( ' name ' , ' postal ' )-> toArray ();
要得到
" MA " => " Massachusetts "
" MN " => " Minnesota "
" MT " => " Montana "
" ND " => " North Dakota "
. . .
該套件使用修改後的 Collection,它允許您將屬性和方法作為物件存取:
$ countries -> where ( ' cca3 ' , ' FRA ' )
-> first ()
-> borders
-> first ()
-> name
-> official ;
應該給
Principality of Andorra
預設情況下,邊框水合是禁用的,但是您可以透過呼叫 Hydro 方法輕鬆地使邊框水合:
$ countries -> where ( ' name.common ' , ' United Kingdom ' )
-> hydrate ( ' borders ' )
-> first ()
-> borders
-> reverse ()
-> first ()
-> name
-> common ;
應該返回
Ireland
為了提高效能,可以在大多數國家/地區屬性上停用預設啟用的水合功能,這就是手動水合屬性的方法:
$ 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 ;
這些是一些保濕特性:
有些屬性的儲存方式不同,因此我們需要特殊的規則來存取它們,這些屬性是
ISO639_3
=> 3 字母語言代碼。ISO4217
=> 3 個字母的貨幣代碼。您當然可以像其他屬性一樣存取它們
$ countries -> whereISO639_3 ( ' por ' )-> count ();
$ countries -> where ( ' ISO639_3 ' , ' por ' )-> count ();
有時您想透過不同的名稱存取屬性,這可以在設定中完成,這樣
' maps ' => [
' lca3 ' => ' ISO639_3 '
]
這裡我們將語言 3 字母短代碼 ISO 格式綁定到lca3
,它是language code alpha 3-letter
的縮寫。現在我們可以透過以下方式存取該屬性
$ countries -> whereLca3 ( ' por ' );
或者
$ 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 ();
應該為您提供 267 個(左右)國家/地區,例如:
"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 ();
回報
[
" Aruba " ,
" Afghanistan " ,
" Angola " ,
" Anguilla " ,
" Åland Islands " ,
... .
$ countries -> all ()-> pluck ( ' currencies ' )-> toArray ();
回報
[
[
" 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 ' );
回報
[
" AL " : " Alabama " ,
" AK " : " Alaska " ,
" AZ " : " Arizona " ,
" AR " : " Arkansas " ,
" CA " : " California " ,
... .
. . . .
$ countries -> where ( ' cca3 ' , ' FRA ' )
-> first ()
-> hydrate ( ' cities ' )
-> cities
-> paris
-> timezone ;
應該返回
Europe/Paris
$ countries -> where ( ' name.common ' , ' United States ' )-> first ()-> currencies ;
回報
[{
" alternativeSigns " : [],
" ISO4217Code ": " USD ",
"ISO4217Number": " 840 ",
"sign": " $ " ,
" subunits " : 100 ,
" title ": " U.S. dollar",
....
$ countries -> currencies ();
回報
[
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 ;
回報
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 ;
回報
" 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 "
]
]
國家提供了許多不同的標誌來源,包括 SVG 標誌。這是使用可用來源之一的方式:
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 !!}
您可以透過執行以下操作來發布配置:
php artisan vendor:publish --provider=PragmaRX\Countries\ServiceProvider
這個包使用了一些其他開源包,在我們沒有建立更好的文檔之前,您可以在這篇精彩的 Laravel 新聞文章中找到有關 mledoze/國家/地區數據以及如何使用它的更多資訊。
請檢查版權部分以取得該軟體包使用的完整清單。
該項目上的資料檔案(JSON、圖像、圖示...)無法手動更新。我們將關閉所有需要手動更新這些文件的拉取請求,因為更新腳本無論如何都會刪除它們。
如果您發現資料有問題,請要求套件管理器(列出的資料來源和版權部分)修復它們,然後您可以自行執行更新腳本以在此儲存庫上正確更新它們。
軟體包附帶update.php
腳本,您必須使用該腳本來更新資料檔。它將下載所有包中的所有資訊並自動建置.json
(以及其他一些文件,例如.svg
)。您可以這樣做:
cd vendor/pragmarx/countries
composer install
php update.php
並等待很長一段時間*(有時看起來像是卡住了,但事實並非如此)直到完成重建所有內容,然後只需暫存、提交、推送所有重新生成的文件並起草新的 PR 即可。
由於該資料不應更改,因此呼叫會自動快取。如果您想更改此行為,可以在發布後編輯config/countries.php
檔案。
安東尼奧·卡洛斯·裡貝羅 所有貢獻者
為了建構國家資料庫和關係,該套件使用了這些來源和套件:
國家/地區根據 BSD 3-Clause License 獲得許可 - 請參閱LICENSE
文件以了解詳細信息
拉取請求和問題非常受歡迎。