Un wrapper API PHP pour offrir une interface de programmation unifiée pour les API de taux de devise populaire.
Ne vous inquiétez pas de votre service de conversion de devises préféré, vous arrêtez soudainement de plans. Éteignez facilement, sans changer votre code.
J'avais besoin d'une API de conversion de devises pour mon site Web de voyage mais je n'ai pas pu trouver de bon package PHP. L'idée du package Rackbeat/php-currency-api est devenue la plus proche, mais malheureusement, ce n'était qu'un talon et non implémenté.
| Service | Identifiant |
|---|---|
| Fixerio | fixerio |
| Devises | currencylayer |
| Taux de change ouverts | openexchangerates |
| API à taux de change | exchangeratesapi |
Si vous souhaitez voir plus de services ajoutés, n'hésitez pas à ouvrir un problème!
PHP 8.x ou PHP 7.3+ ou plus (testé sur 7.3 et 7.4 )composer pour PHP Besoin simplement du package à l'aide composer et vous êtes prêt à partir!
$ composer require otherguy/php-currency-api La classe OtherguyCurrencySymbol fournit des constantes pour chaque devise prise en charge.
! Remarque: vous n'êtes pas obligé d'utiliser
OtherguyCurrencySymbolpour spécifier les symboles. C'est simplement une aide de commodité et n'a pas besoin d'être utilisé. Vous pouvez simplement passer des chaînes comme'USD', 'EUR', ...à toutes les méthodes.
// 'USD'
$ symbol = Otherguy Currency Symbol:: USD ; Utilisez la méthode all() pour récupérer un tableau de tous les symboles de devise:
// [ 'AED', 'AFN', ... 'ZWL' ]
$ symbols = Otherguy Currency Symbol:: all (); La méthode names() renvoie à la place un tableau associatif avec des noms de devises:
// [ 'AED' => 'United Arab Emirates Dirham', 'AFN' => 'Afghan Afghani', ... ]
$ symbols = Otherguy Currency Symbol:: names (); Pour obtenir le nom d'une seule devise, utilisez la méthode name() :
// 'United States Dollar'
$ symbols = Otherguy Currency Symbol:: name ( Otherguy Currency Symbol:: USD ); $ currency = Otherguy Currency DriverFactory:: make ( ' fixerio ' ); // driver identifier from supported drivers. Pour obtenir une liste de pilotes pris en charge, utilisez la méthode getDrivers() :
// [ 'mock', 'fixerio', 'currencylayer', ... ]
$ drivers = Otherguy Currency DriverFactory:: getDrivers ()La plupart des fournisseurs d'API vous obligent à vous inscrire et à utiliser votre clé d'accès émise pour vous authentifier contre leur API. Vous pouvez spécifier votre clé d'accès comme tel:
$ currency -> accessKey ( ' your-access-token-goes-here ' ); Pour définir d'autres options de configuration, vous pouvez utiliser la méthode config() . Un exemple est l'option de mise en forme JSON de CurrencyLayer.
$ currency -> config ( ' format ' , ' 1 ' ); Vous pouvez utiliser à from() ou source() pour définir la monnaie de base. Les méthodes sont identiques.
! Remarque: chaque pilote définit sa propre monnaie de base par défaut. FixErio utilise
EURcomme devise de base tandis que CurrencyLayer utiliseUSD.
La plupart des services vous permettent uniquement de modifier la monnaie de base dans leurs plans payants. Le pilote lancera un OtherguyCurrencyExceptionsApiException si votre plan actuel ne permet pas de modifier la devise de base.
$ currency -> source ( Otherguy Currency Symbol:: USD );
$ currency -> from ( Otherguy Currency Symbol:: USD ); Vous pouvez utiliser to() ou symbols() pour définir les devises de retour. Les méthodes sont identiques. Passez une seule monnaie ou un tableau de symboles de devise à l'une de ces méthodes.
! Remarque: Passez un tableau vide pour retourner tous les symboles de devise pris en charge par ce pilote. C'est la valeur par défaut si vous n'appelez pas du tout la méthode.
$ currency -> to ( Otherguy Currency Symbol:: BTC );
$ currency -> symbols ([ Otherguy Currency Symbol:: BTC , Otherguy Currency Symbol:: EUR , Otherguy Currency Symbol:: USD ]); Cela récupère les taux de change les plus récents et renvoie un objet 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 Pour récupérer les taux de change historiques, utilisez la méthode historical() . Notez que vous devez spécifier une date en tant que paramètre de méthode ou en utilisant les méthodes date() . Voir l'interface courante pour plus d'informations.
$ currency -> date ( ' 2010-01-01 ' )-> historical ();
$ currency -> historical ( ' 2018-07-01 ' ); Utilisez la méthode convert() pour convertir les montants entre les devises.
! Remarque: la plupart des fournisseurs d'API n'autorisent pas l'accès à cette méthode en utilisant votre compte gratuit. Vous pouvez toujours utiliser les derniers tarifs ou points de terminaison des taux historiques et effectuer des calculs ou des conversions sur l'objet
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, 2019La plupart des méthodes peuvent être utilisées avec une interface fluide , vous permettant de chaîner des appels de méthode pour un code plus lisible:
// 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 (); Les points de terminaison get() et historical() renvoient un objet ConversionResult . Cet objet vous permet d'effectuer facilement des calculs et des conversions.
! Remarque: Même si les comptes gratuits de la plupart des fournisseurs ne vous permettent pas de modifier la monnaie de base, vous pouvez toujours utiliser l'objet
ConversionResultpour modifier la devise de base plus tard. Cependant, cela peut ne pas être aussi précis que de modifier la monnaie de base directement.
! Remarque: Pour convertir entre deux devises, vous devez les demander les deux dans votre demande initiale
get()ouhistorical(). Vous ne pouvez pas vous convertir entre des devises qui n'ont pas été récupérées!
Voir le code suivant pour quelques exemples de ce que vous pouvez faire avec l'objet 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 );Les demandes de traction sont plus que les bienvenues! Je recherche une couverture de test à 100% pour ce référentiel, alors assurez-vous d'ajouter des tests pour votre code.