غلاف API PHP لتقديم واجهة برمجة موحدة لواجهة برمجة تطبيقات معدل العملة الشائعة.
لا تقلق بشأن خدمة تحويل العملات المفضلة لديك فجأة لإغلاق خططك أو تبديلها. التبديل بسهولة ، دون تغيير التعليمات البرمجية الخاصة بك.
كنت بحاجة إلى واجهة برمجة تطبيقات تحويل العملة لموقع السفر الخاص بي ولكن لم أتمكن من العثور على حزمة PHP جيدة. جاءت فكرة حزمة Rackbeat/php-currency-api الأقرب ، لكن لسوء الحظ كانت مجرد كعب ولم يتم تنفيذها.
| خدمة | المعرف |
|---|---|
| Fixerio | fixerio |
| عملة | currencylayer |
| أسعار الصرف المفتوحة | openexchangerates |
| أسعار الصرف API | exchangeratesapi |
إذا كنت ترغب في رؤية المزيد من الخدمات المضافة ، فلا تتردد في فتح مشكلة!
PHP 8.x أو PHP 7.3+ أو أعلى (تم اختباره على كل من 7.3 و 7.4 )composer لـ PHP ما عليك سوى طلب الحزمة باستخدام composer وأنت على ما يرام!
$ composer require otherguy/php-currency-api يوفر فئة OtherguyCurrencySymbol لكل عملة مدعومة.
! ملاحظة: لا يُطلب منك استخدام
OtherguyCurrencySymbolلتحديد الرموز. إنه ببساطة مساعد مريح ولا يلزم استخدامه. يمكنك ببساطة تمرير سلاسل مثل'USD', 'EUR', ...إلى جميع الطرق.
// 'USD'
$ symbol = Otherguy Currency Symbol:: USD ; استخدم طريقة all() لاسترداد مجموعة من رموز العملة:
// [ 'AED', 'AFN', ... 'ZWL' ]
$ symbols = Otherguy Currency Symbol:: all (); تقوم طريقة names() بإرجاع مجموعة نقابية بأسماء العملة بدلاً من ذلك:
// [ 'AED' => 'United Arab Emirates Dirham', 'AFN' => 'Afghan Afghani', ... ]
$ symbols = Otherguy Currency Symbol:: names (); للحصول على اسم عملة واحدة ، استخدم طريقة name() :
// 'United States Dollar'
$ symbols = Otherguy Currency Symbol:: name ( Otherguy Currency Symbol:: USD ); $ currency = Otherguy Currency DriverFactory:: make ( ' fixerio ' ); // driver identifier from supported drivers. للحصول على قائمة من برامج التشغيل المدعومة ، استخدم طريقة getDrivers() :
// [ 'mock', 'fixerio', 'currencylayer', ... ]
$ drivers = Otherguy Currency DriverFactory:: getDrivers ()يطلب منك معظم مزودي واجهة برمجة التطبيقات التسجيل واستخدام مفتاح الوصول المصدر للمصادقة مقابل واجهة برمجة التطبيقات الخاصة بهم. يمكنك تحديد مفتاح الوصول الخاص بك مثل:
$ currency -> accessKey ( ' your-access-token-goes-here ' ); لتعيين مزيد من خيارات التكوين ، يمكنك استخدام طريقة config() . مثال على ذلك هو خيار تنسيق JSON الخاص بالعملة.
$ currency -> config ( ' format ' , ' 1 ' ); يمكنك استخدام إما from() أو source() لتعيين العملة الأساسية. الطرق متطابقة.
! ملاحظة: يقوم كل برنامج تشغيل بتعيين عملة الأساس الافتراضية الخاصة به. يستخدم Fixerio
EURكعملة أساسية بينما يستخدم CurrencylyerUSD.
تسمح لك معظم الخدمات فقط بتغيير العملة الأساسية في خططها المدفوعة. سوف يرمي السائق عملة OtherguyCurrencyExceptionsApiException إذا كانت خطتك الحالية لا تسمح بتغيير العملة الأساسية.
$ currency -> source ( Otherguy Currency Symbol:: USD );
$ currency -> from ( Otherguy Currency Symbol:: USD ); يمكنك استخدام إما to() أو symbols() لتعيين عملات الإرجاع. الطرق متطابقة. تمرير عملة واحدة أو مجموعة من رموز العملة لأي من هذه الطرق.
! ملاحظة: تمرير صفيف فارغ لإرجاع جميع رموز العملة التي يدعمها هذا السائق. هذا هو الافتراضي إذا لم تتصل بالطريقة على الإطلاق.
$ currency -> to ( Otherguy Currency Symbol:: BTC );
$ currency -> symbols ([ Otherguy Currency Symbol:: BTC , Otherguy Currency Symbol:: EUR , Otherguy Currency Symbol:: USD ]); هذا يسترجع أحدث أسعار الصرف ويعود كائن ConversionResult .
$ currency -> get (); // Get latest rates for selected symbols, using set base currency
$ currency -> get ( ' DKK ' ); // Get latest rates for selected symbols, using DKK as base currency لاسترداد أسعار الصرف التاريخية ، استخدم الطريقة historical() . لاحظ أنك تحتاج إلى تحديد تاريخ إما كمعلمة طريقة أو باستخدام أساليب date() . انظر واجهة بطلاقة لمزيد من المعلومات.
$ currency -> date ( ' 2010-01-01 ' )-> historical ();
$ currency -> historical ( ' 2018-07-01 ' ); استخدم طريقة convert() لتحويل المبالغ بين العملات.
! ملاحظة: لا يسمح معظم مزودي API بالوصول إلى هذه الطريقة باستخدام حسابك المجاني. لا يزال بإمكانك استخدام أحدث المعدلات أو نقاط نهاية المعدلات التاريخية وإجراء الحسابات أو التحويلات على كائن
ConversionResult.
$ currency -> convert ( 10.00 , ' USD ' , ' THB ' ); // Convert 10 USD to THB
$ currency -> convert ( 122.50 , ' NPR ' , ' EUR ' , ' 2019-01-01 ' ); // Convert 122.50 NPR to EUR using the rates from January 1st, 2019يمكن استخدام معظم الطرق مع واجهة بطلاقة ، مما يسمح لك بسلسلة استدعاء طريقة المزيد من الكود القابل للقراءة:
// Namespaces are omitted for readability!
DriverFactory:: make ( ' driver ' )-> from (Symbol:: USD )-> to (Symbol:: EUR )-> get ();
DriverFactory:: make ( ' driver ' )-> from (Symbol:: USD )-> to (Symbol:: NPR )-> date ( ' 2013-03-02 ' )-> historical ();
DriverFactory:: make ( ' driver ' )-> from (Symbol:: USD )-> to (Symbol:: NPR )-> amount ( 12.10 )-> convert (); تُرجع نقاط get() و historical() كائن ConversionResult . يتيح لك هذا الكائن إجراء الحسابات والتحويلات بسهولة.
! ملاحظة: على الرغم من أن الحسابات المجانية لمعظم مقدمي الخدمات لا تسمح لك بتغيير العملة الأساسية ، فلا يزال بإمكانك استخدام كائن
ConversionResultلتغيير العملة الأساسية لاحقًا. قد لا يكون هذا دقيقًا مثل تغيير العملة الأساسية مباشرة.
! ملاحظة: للتحويل بين عملتين ، تحتاج إلى طلب كل منهما في طلب
get()أوhistorical(). لا يمكنك التحويل بين العملات التي لم يتم جلبها!
راجع الكود التالي للحصول على بعض الأمثلة على ما يمكنك القيام به مع كائن ConversionResult .
$ result = DriverFactory:: make ( ' driver ' )-> from (Symbol:: USD )-> to ([Symbol:: EUR , Symbol:: GBP ])-> get ();
// [ 'USD' => 1.00, 'EUR' => 0.89, 'GBP' => 0.79 ]
$ result -> all ();
// 'USD'
$ result -> getBaseCurrency ();
// '2019-06-11'
$ result -> getDate ();
// 0.89
$ result -> rate (Symbol:: EUR );
// CurrencyException("No conversion result for BTC!");
$ result -> rate (Symbol:: BTC );
// 5.618
$ result -> convert ( 5.0 , Symbol:: EUR , Symbol:: USD );
// [ 'USD' => 1.13, 'EUR' => 1.00, 'GBP' => 0.89 ]
$ result -> setBaseCurrency (Symbol:: EUR )-> all ();
// 1.12
$ result -> setBaseCurrency (Symbol:: GBP )-> rate (Symbol:: EUR );طلبات السحب أكثر من موضع ترحيب! أنا أسعى للحصول على تغطية اختبار 100 ٪ لهذا المستودع ، يرجى التأكد من إضافة اختبارات للرمز الخاص بك.