แพ็คเกจนี้มีข้อมูลทุกประเภทเกี่ยวกับประเทศต่างๆ:
ข้อมูล | รายการ |
---|---|
ภาษี | 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 พร้อมใช้งาน วิธีนี้คุณสามารถทำสิ่งต่าง ๆ เช่น filter , แผนที่, ลดขนาด, ค้นหา, จัดเรียง, ปฏิเสธ และอื่นๆ อีกมากมาย ที่จริงแล้วมันใช้ 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 "
. . .
แพคเกจใช้คอลเลกชันที่แก้ไขซึ่งช่วยให้คุณเข้าถึงคุณสมบัติและวิธีการเป็นวัตถุ:
$ countries -> where ( ' cca3 ' , ' FRA ' )
-> first ()
-> borders
-> first ()
-> name
-> official ;
ควรให้
Principality of Andorra
การให้ความชุ่มชื้นของเส้นขอบจะถูกปิดใช้งานตามค่าเริ่มต้น แต่คุณสามารถทำให้เส้นขอบของคุณชุ่มชื้นได้อย่างง่ายดายโดยการเรียกเมธอดไฮเดรต:
$ 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
แพ็คเกจนี้ใช้แพ็คเกจโอเพ่นซอร์สอื่น ๆ และคุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับข้อมูลเกี่ยวกับ mledoze/ประเทศ และวิธีการใช้งานได้ในบทความ Laravel News ที่ยอดเยี่ยมนี้ จนกว่าเราจะไม่สร้างเอกสารที่ดีกว่านี้
โปรดตรวจสอบส่วนลิขสิทธิ์เพื่อดูรายการแพ็คเกจทั้งหมดที่ใช้โดยอันนี้
ไม่สามารถอัปเดตไฟล์ข้อมูล (JSON, รูปภาพ, ไอคอน...) ในโปรเจ็กต์นี้ได้ด้วยตนเอง เราจะปิดคำขอดึงข้อมูลทั้งหมดที่ต้องอัปเดตด้วยตนเอง สำหรับไฟล์เหล่านั้นจะถูกปิด เนื่องจากสคริปต์การอัปเดตจะลบออกต่อไป
หากคุณพบสิ่งผิดปกติกับข้อมูล โปรดขอให้ผู้จัดการแพ็คเกจ (แหล่งข้อมูลที่ระบุไว้และในส่วนลิขสิทธิ์) ทำการแก้ไข จากนั้นคุณสามารถเรียกใช้สคริปต์อัปเดตเพื่ออัปเดตอย่างเหมาะสมในที่เก็บข้อมูลนี้
แพ็คเกจนี้มาพร้อมกับสคริปต์ update.php
ซึ่งคุณต้องใช้เพื่ออัปเดตไฟล์ข้อมูล มันจะดาวน์โหลดข้อมูลทั้งหมดจากแพ็คเกจทั้งหมดและสร้าง .json
โดยอัตโนมัติ (และบางแพ็คเกจเช่น .svg
ด้วย) นี่คือวิธีที่คุณทำ:
cd vendor/pragmarx/countries
composer install
php update.php
และรอ นานมาก * (บางทีก็ดูเหมือนติดขัดแต่ไม่ติด) จนสร้างใหม่ทั้งหมดเสร็จก็เหลือแค่เรื่อง staging, commit, push ไฟล์ที่สร้างใหม่ทั้งหมด และร่าง PR ใหม่
เนื่องจากข้อมูลนี้ไม่ควรเปลี่ยนแปลง การโทรจึงถูกแคชโดยอัตโนมัติ หากคุณต้องการเปลี่ยนลักษณะการทำงานนี้ คุณสามารถแก้ไขไฟล์ config/countries.php
ได้เมื่อเผยแพร่แล้ว
อันโตนิโอ คาร์ลอส ริเบโร ผู้ร่วมสมทบทั้งหมด
เพื่อสร้างฐานข้อมูลและความสัมพันธ์ของประเทศ แพ็คเกจนี้ใช้แหล่งข้อมูลและแพ็คเกจเหล่านั้น:
ประเทศต่างๆ ได้รับใบอนุญาตภายใต้ใบอนุญาต BSD 3-Clause - ดูรายละเอียดในไฟล์ LICENSE
คำขอดึงและปัญหาต่างๆ เป็นเรื่องที่น่ายินดีเป็นอย่างยิ่ง