تحتوي هذه الحزمة على جميع أنواع المعلومات حول البلدان:
معلومات | أغراض |
---|---|
الضرائب | 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 في جوهرها، جميع الطرق في المجموعات متاحة، وبهذه الطريقة يمكنك القيام بأشياء مثل التصفية والخريطة والتقليل والبحث والفرز والرفض وغير ذلك الكثير. في الواقع، يستخدم Coollection، وهو عبارة عن مجموعات Laravel ذات بناء جملة سلس، مما يسمح لنا بالوصول إلى مفاتيح المصفوفة (والقيم) كخصائص كائن.
للحصول على جميع البلدان في قاعدة البيانات، عليك فقط:
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 '
]
نحن هنا نربط تنسيق ISO للرمز القصير المكون من 3 أحرف بـ 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/countries وكيفية استخدامها في مقالة Laravel News الرائعة هذه.
يرجى مراجعة قسم حقوق الطبع والنشر للحصول على قائمة كاملة بالحزم المستخدمة بواسطة هذه الحزمة.
لا يمكن تحديث أي ملفات بيانات (JSON، صور، أيقونات...) في هذا المشروع يدويًا. سوف نقوم بإغلاق جميع طلبات السحب التي تتطلب تحديثات يدوية لهذه الملفات وسيتم إغلاقها، لأن البرنامج النصي للتحديث سوف يحذفها على أي حال.
إذا وجدت خطأ ما في البيانات، فمن فضلك، عليك أن تطلب من مديري الحزم (مصادر البيانات المدرجة وفي قسم حقوق الطبع والنشر) إصلاحها، وبعد ذلك يمكنك تشغيل البرنامج النصي للتحديث بنفسك لتحديثها بشكل صحيح في هذا المستودع.
تأتي هذه الحزمة مع البرنامج النصي update.php
، الذي يجب عليك استخدامه لتحديث ملفات البيانات. سيقوم بتنزيل جميع المعلومات من جميع الحزم وإنشاء ملف .json
تلقائيًا (وبعض البرامج الأخرى مثل .svg
أيضًا). هذه هي الطريقة التي تفعل بها ذلك:
cd vendor/pragmarx/countries
composer install
php update.php
وانتظر لفترة طويلة جدًا * (أحيانًا يبدو الأمر وكأنه عالق ولكنه ليس كذلك) حتى ينتهي من إعادة بناء كل شيء، ثم يكون الأمر مجرد مسألة تنظيم، والالتزام، ودفع جميع الملفات التي تم إنشاؤها، وصياغة علاقات عامة جديدة.
وبما أنه ليس من المفترض أن تتغير هذه البيانات، فسيتم تخزين المكالمات مؤقتًا تلقائيًا. إذا كنت تريد تغيير هذا السلوك، فيمكنك تحرير ملف config/countries.php
بمجرد نشره.
أنطونيو كارلوس ريبيرو جميع المساهمين
لبناء قاعدة بيانات وعلاقات البلدان، تستفيد هذه الحزمة من تلك المصادر والحزم:
البلدان مرخصة بموجب ترخيص BSD المكون من 3 فقرات - راجع ملف LICENSE
للحصول على التفاصيل
طلبات السحب والقضايا هي موضع ترحيب كبير.