Eine PHP -API -Wrapper, die eine einheitliche Programmierschnittstelle für beliebte Währungsrate -APIs anbietet.
Machen Sie sich keine Sorgen, dass Ihr bevorzugter Währungs -Conversion -Service plötzlich die Pläne für Sie abschließt oder umschaltet. Schalten Sie einfach weg, ohne Ihren Code zu ändern.
Ich brauchte eine Currency Conversion -API für meine Reisewebsite, konnte aber kein gutes PHP -Paket finden. Die Idee des Rackbeat/php-currency-api Pakets kam am nächsten, aber leider war es nur ein Stub und nicht implementiert.
| Service | Kennung |
|---|---|
| Fixerio | fixerio |
| Währungsschicht | currencylayer |
| Offene Wechselkurse | openexchangerates |
| Wechselkurse API | exchangeratesapi |
Wenn Sie mehr Dienste hinzugefügt haben möchten, können Sie ein Problem eröffnen!
PHP 8.x oder PHP 7.3+ oder höher (getestet auf 7.3 und 7.4 )composer -Abhängigkeitsmanager für PHP Erfordern Sie das Paket einfach mit composer und Sie können loslegen!
$ composer require otherguy/php-currency-api Die OtherguyCurrencySymbol bietet Konstanten für jede unterstützte Währung.
! HINWEIS: Sie müssen nicht
OtherguyCurrencySymbolangeben, um Symbole anzugeben. Es ist einfach ein Komforthelfer und muss nicht verwendet werden. Sie können einfach Saiten wie'USD', 'EUR', ...an alle Methoden übergeben.
// 'USD'
$ symbol = Otherguy Currency Symbol:: USD ; Verwenden Sie die Methode all() , um ein Array aller Währungssymbole abzurufen:
// [ 'AED', 'AFN', ... 'ZWL' ]
$ symbols = Otherguy Currency Symbol:: all (); Die methode names() gibt stattdessen ein assoziatives Array mit Währungsnamen zurück:
// [ 'AED' => 'United Arab Emirates Dirham', 'AFN' => 'Afghan Afghani', ... ]
$ symbols = Otherguy Currency Symbol:: names (); Um den Namen einer einzelnen Währung zu erhalten, verwenden Sie die name() -Methode:
// 'United States Dollar'
$ symbols = Otherguy Currency Symbol:: name ( Otherguy Currency Symbol:: USD ); $ currency = Otherguy Currency DriverFactory:: make ( ' fixerio ' ); // driver identifier from supported drivers. Um eine Liste unterstützter Treiber zu erhalten, verwenden Sie die Methode getDrivers() :
// [ 'mock', 'fixerio', 'currencylayer', ... ]
$ drivers = Otherguy Currency DriverFactory:: getDrivers ()In den meisten API -Anbietern müssen Sie Ihren ausgestellten Zugriffstaste anmelden und verwenden, um sich mit ihrer API zu authentifizieren. Sie können Ihren Zugriffsschlüssel wie SO angeben:
$ currency -> accessKey ( ' your-access-token-goes-here ' ); Um weitere Konfigurationsoptionen festzulegen, können Sie die Methode config() verwenden. Ein Beispiel ist die JSON -Formatierungsoption von CurrencyLayer.
$ currency -> config ( ' format ' , ' 1 ' ); Sie können entweder from() oder source() verwenden, um die Basiswährung festzulegen. Die Methoden sind identisch.
! Hinweis: Jeder Treiber legt seine eigene Standard -Basiswährung fest. Fixerio verwendet
EURals Basiswährung, während CurrencyLayerUSDverwendet.
Mit den meisten Diensten können Sie nur die Grundwährung in ihren bezahlten Plänen ändern. Der Fahrer wirft eine OtherguyCurrencyExceptionsApiException aus, wenn Ihr aktueller Plan nicht zulässt, die Grundwährung zu ändern.
$ currency -> source ( Otherguy Currency Symbol:: USD );
$ currency -> from ( Otherguy Currency Symbol:: USD ); Sie können entweder to() oder symbols() verwenden, um die Rückgabewährungen festzulegen. Die Methoden sind identisch. Übergeben Sie eine einzelne Währung oder eine Reihe von Währungssymbolen an eine dieser Methoden.
! Hinweis: Geben Sie ein leeres Array über, um alle von diesem Treiber unterstützten Währungssymbole zurückzugeben. Dies ist die Standardeinstellung, wenn Sie die Methode überhaupt nicht aufrufen.
$ currency -> to ( Otherguy Currency Symbol:: BTC );
$ currency -> symbols ([ Otherguy Currency Symbol:: BTC , Otherguy Currency Symbol:: EUR , Otherguy Currency Symbol:: USD ]); Dies ruft die neuesten Wechselkurse ab und gibt ein ConversionResult -Objekt zurück.
$ 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 Verwenden Sie die historical() -Methode, um historische Wechselkurse abzurufen. Beachten Sie, dass Sie ein Datum entweder als Methodeparameter oder mithilfe der Methoden date() angeben müssen. Weitere Informationen finden Sie unter fließender Schnittstelle.
$ currency -> date ( ' 2010-01-01 ' )-> historical ();
$ currency -> historical ( ' 2018-07-01 ' ); Verwenden Sie die Methode convert() um Beträge zwischen Währungen umzuwandeln.
! Hinweis: Die meisten API -Anbieter ermöglichen keinen Zugriff auf diese Methode mit Ihrem kostenlosen Konto. Sie können weiterhin die neuesten Raten oder historischen Raten Endpunkte verwenden und Berechnungen oder Conversions im
ConversionResult-Objekt durchführen.
$ 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, 2019Die meisten Methoden können mit einer fließenden Schnittstelle verwendet werden, sodass Sie die Methode für die Kettenmethode für mehr lesbare Code erfordern:
// 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 (); Die Endpunkte get() und historical() geben ein ConversionResult -Objekt zurück. Mit diesem Objekt können Sie Berechnungen und Konvertierungen problemlos durchführen.
! HINWEIS: Auch wenn Sie kostenlose Konten der meisten Anbieter nicht ermöglichen, die Grundwährung zu ändern, können Sie das
ConversionResult-Objekt verwenden, um die Basiswährung später zu ändern. Dies ist jedoch möglicherweise nicht so genau wie die direkte Änderung der Basiswährung.
! HINWEIS: Um zwischen zwei Währungen umzuwandeln, müssen Sie beide in Ihrer ersten
get()oderhistorical()Anfrage anfordern. Sie können nicht zwischen Währungen konvertieren, die nicht abgerufen wurden!
Im folgenden Code finden Sie einige Beispiele für das, was Sie mit dem ConversionResult -Objekt tun können.
$ 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 );Pull -Anfragen sind mehr als willkommen! Ich bemühe mich um eine 100% ige Testabdeckung für dieses Repository. Fügen Sie also sicher, dass Sie Tests für Ihren Code hinzufügen.