이 패키지에는 국가에 대한 모든 종류의 정보가 포함되어 있습니다.
정보 | 아이템 |
---|---|
구실 | 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 컬렉션이 있고 컬렉션의 모든 메소드를 사용할 수 있으므로 필터와 같은 작업을 수행할 수 있습니다. , 매핑, 축소, 검색, 정렬, 거부 등을 수행할 수 있습니다. 실제로 이는 유연한 구문을 갖춘 Laravel 컬렉션인 Coollection을 사용하여 배열 키(및 값)에 객체 속성으로 액세스할 수 있도록 해줍니다.
데이터베이스의 모든 국가를 얻으려면 다음을 수행하면 됩니다.
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
테두리 수화는 기본적으로 비활성화되어 있지만 hydrate 메소드를 호출하여 쉽게 테두리를 수화시킬 수 있습니다.
$ 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 형식을 language code alpha 3-letter
의 약어인 lca3
에 바인딩합니다. 이제 우리는 다음과 같이 속성에 액세스할 수 있습니다.
$ 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/countries의 데이터와 이를 사용하는 방법에 대한 자세한 정보를 이 환상적인 Laravel News 기사에서 찾을 수 있습니다.
이 패키지에서 사용되는 전체 패키지 목록을 보려면 저작권 섹션을 확인하세요.
이 프로젝트의 데이터 파일(JSON, 이미지, 아이콘...)은 수동으로 업데이트할 수 없습니다. 해당 파일에 대한 수동 업데이트가 필요한 모든 끌어오기 요청은 닫힐 것입니다. 업데이트 스크립트가 어쨌든 해당 파일을 삭제하기 때문입니다.
데이터에 문제가 있는 경우 패키지 관리자(나열된 데이터 소스 및 저작권 섹션)에게 수정을 요청해야 합니다. 그런 다음 업데이트 스크립트를 직접 실행하여 이 저장소에서 적절하게 업데이트할 수 있습니다.
이 패키지에는 데이터 파일을 업데이트하는 데 반드시 사용해야 하는 update.php
스크립트가 함께 제공됩니다. 모든 패키지에서 모든 정보를 다운로드하고 자동으로 .json
을 빌드합니다(그리고 .svg
와 같은 일부도 포함). 수행 방법은 다음과 같습니다.
cd vendor/pragmarx/countries
composer install
php update.php
그리고 모든 것을 다시 빌드하는 것이 완료될 때까지 매우 오랜 시간 *(때때로 멈춰 있는 것처럼 보이지만 그렇지 않음) 기다리면 스테이징, 커밋, 재생성된 모든 파일 푸시 및 새 PR 초안만 있으면 됩니다.
이 데이터는 변경되지 않으므로 통화가 자동으로 캐시됩니다. 이 동작을 변경하려면 게시된 후 config/countries.php
파일을 편집하면 됩니다.
안토니오 카를로스 리베이로 모든 기여자
국가 데이터베이스와 관계를 구축하기 위해 이 패키지는 해당 소스와 패키지를 사용합니다.
국가는 BSD 3조 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE
파일을 참조하세요.
끌어오기 요청과 문제는 환영할 만한 일입니다.