Pembungkus API PHP untuk menawarkan antarmuka pemrograman terpadu untuk API tingkat mata uang populer.
Jangan khawatir tentang layanan konversi mata uang favorit Anda tiba -tiba mematikan atau mengganti paket pada Anda. Beralih dengan mudah, tanpa mengubah kode Anda.
Saya membutuhkan API konversi mata uang untuk situs web perjalanan saya tetapi tidak dapat menemukan paket PHP yang bagus. Gagasan paket Rackbeat/php-currency-api datang paling dekat tetapi sayangnya itu hanya rintisan dan tidak diimplementasikan.
| Melayani | Pengidentifikasi |
|---|---|
| Fixerio | fixerio |
| CurrencyLayer | currencylayer |
| Buka nilai tukar | openexchangerates |
| API nilai tukar | exchangeratesapi |
Jika Anda ingin melihat lebih banyak layanan ditambahkan, jangan ragu untuk membuka masalah!
PHP 8.x atau PHP 7.3+ atau lebih tinggi (diuji pada 7.3 dan 7.4 )composer untuk PHP Cukup membutuhkan paket menggunakan composer dan Anda siap melakukannya!
$ composer require otherguy/php-currency-api Kelas OtherguyCurrencySymbol menyediakan konstanta untuk setiap mata uang yang didukung.
! Catatan: Anda tidak diharuskan menggunakan
OtherguyCurrencySymboluntuk menentukan simbol. Ini hanyalah penolong kenyamanan dan tidak perlu digunakan. Anda bisa melewati string seperti'USD', 'EUR', ...untuk semua metode.
// 'USD'
$ symbol = Otherguy Currency Symbol:: USD ; Gunakan metode all() untuk mengambil array dari semua simbol mata uang:
// [ 'AED', 'AFN', ... 'ZWL' ]
$ symbols = Otherguy Currency Symbol:: all (); Metode names() mengembalikan array asosiatif dengan nama mata uang sebagai gantinya:
// [ 'AED' => 'United Arab Emirates Dirham', 'AFN' => 'Afghan Afghani', ... ]
$ symbols = Otherguy Currency Symbol:: names (); Untuk mendapatkan nama mata uang tunggal, gunakan metode name() :
// 'United States Dollar'
$ symbols = Otherguy Currency Symbol:: name ( Otherguy Currency Symbol:: USD ); $ currency = Otherguy Currency DriverFactory:: make ( ' fixerio ' ); // driver identifier from supported drivers. Untuk mendapatkan daftar driver yang didukung, gunakan metode getDrivers() :
// [ 'mock', 'fixerio', 'currencylayer', ... ]
$ drivers = Otherguy Currency DriverFactory:: getDrivers ()Sebagian besar penyedia API mengharuskan Anda untuk mendaftar dan menggunakan kunci akses yang Anda kunjungi untuk mengotentikasi terhadap API mereka. Anda dapat menentukan kunci akses Anda seperti itu:
$ currency -> accessKey ( ' your-access-token-goes-here ' ); Untuk mengatur opsi konfigurasi lebih lanjut, Anda dapat menggunakan metode config() . Contohnya adalah opsi pemformatan JSON CurrencyLayer.
$ currency -> config ( ' format ' , ' 1 ' ); Anda dapat menggunakan from() atau source() untuk mengatur mata uang dasar. Metodenya identik.
! Catatan: Setiap driver menetapkan mata uang dasar defaultnya sendiri. Fixerio menggunakan
EURsebagai mata uang dasar sementara CurrencyLayer menggunakanUSD.
Sebagian besar layanan hanya memungkinkan Anda untuk mengubah mata uang dasar dalam rencana berbayar mereka. Pengemudi akan melempar OtherguyCurrencyExceptionsApiException jika rencana Anda saat ini tidak memungkinkan mengubah mata uang dasar.
$ currency -> source ( Otherguy Currency Symbol:: USD );
$ currency -> from ( Otherguy Currency Symbol:: USD ); Anda dapat menggunakan to() atau symbols() untuk mengatur mata uang pengembalian. Metodenya identik. Lewati satu mata uang tunggal atau serangkaian simbol mata uang ke salah satu dari metode ini.
! Catatan: Lewati array kosong untuk mengembalikan semua simbol mata uang yang didukung oleh pengemudi ini. Ini adalah default jika Anda tidak memanggil metode sama sekali.
$ currency -> to ( Otherguy Currency Symbol:: BTC );
$ currency -> symbols ([ Otherguy Currency Symbol:: BTC , Otherguy Currency Symbol:: EUR , Otherguy Currency Symbol:: USD ]); Ini mengambil nilai tukar terbaru dan mengembalikan objek 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 Untuk mengambil nilai tukar historis, gunakan metode historical() . Perhatikan bahwa Anda perlu menentukan tanggal baik sebagai parameter metode atau dengan menggunakan metode date() . Lihat antarmuka yang lancar untuk informasi lebih lanjut.
$ currency -> date ( ' 2010-01-01 ' )-> historical ();
$ currency -> historical ( ' 2018-07-01 ' ); Gunakan metode convert() untuk mengonversi jumlah antar mata uang.
! Catatan: Sebagian besar penyedia API tidak mengizinkan akses ke metode ini menggunakan akun gratis Anda. Anda masih dapat menggunakan tarif terbaru atau titik akhir tarif historis dan melakukan perhitungan atau konversi pada objek
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, 2019Sebagian besar metode dapat digunakan dengan antarmuka yang lancar , memungkinkan Anda untuk berantai panggilan untuk kode yang lebih mudah dibaca:
// 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 (); Titik akhir get() dan historical() mengembalikan objek ConversionResult . Objek ini memungkinkan Anda untuk melakukan perhitungan dan konversi dengan mudah.
! Catatan: Meskipun akun gratis sebagian besar penyedia tidak memungkinkan Anda untuk mengubah mata uang dasar, Anda masih dapat menggunakan objek
ConversionResultuntuk mengubah mata uang dasar nanti. Ini mungkin tidak seakurat mengubah mata uang dasar secara langsung.
! Catatan: Untuk mengonversi antara dua mata uang, Anda perlu meminta keduanya dalam permintaan awal
get()atauhistorical()awal Anda. Anda tidak dapat mengonversi antara mata uang yang belum diambil!
Lihat kode berikut untuk beberapa contoh dari apa yang dapat Anda lakukan dengan objek 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 );Permintaan tarik lebih dari disambut! Saya berjuang untuk cakupan tes 100% untuk repositori ini, jadi pastikan untuk menambahkan tes untuk kode Anda.