PHP API 래퍼는 인기있는 통화 속도 API를위한 통합 프로그래밍 인터페이스를 제공합니다.
좋아하는 통화 변환 서비스가 갑자기 종료되거나 계획을 전환하는 것에 대해 걱정하지 마십시오. 코드를 변경하지 않고 쉽게 전환하십시오.
여행 웹 사이트에는 통화 변환 API가 필요했지만 좋은 PHP 패키지를 찾을 수 없었습니다. Rackbeat/php-currency-api 패키지의 아이디어는 가장 가까이 왔지만 불행히도 스터브 일뿐 아니라 구현되지 않았습니다.
| 서비스 | 식별자 |
|---|---|
| Fixerio | fixerio |
| CurrencyLayer | currencylayer |
| 공개 환율 | openexchangerates |
| 환율 API | exchangeratesapi |
더 많은 서비스가 추가되기를 원한다면 자유롭게 문제를 열십시오!
PHP 8.x 또는 PHP 7.3+ 이상 ( 7.3 및 7.4 에서 테스트)composer 의존 관리자 composer 사용하여 패키지를 필요로하면 갈 수 있습니다!
$ composer require otherguy/php-currency-api OtherguyCurrencySymbol Class는 각 지원 된 통화에 대한 상수를 제공합니다.
! 참고 : 기호를 지정하기 위해
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 ()대부분의 API 제공 업체는 가입하여 발행 된 액세스 키를 사용하여 API에 대해 인증해야합니다. 액세스 키를 다음과 같이 지정할 수 있습니다.
$ currency -> accessKey ( ' your-access-token-goes-here ' ); 추가 구성 옵션을 설정하려면 config() 메소드를 사용할 수 있습니다. CurrencyLayer의 JSON 서식 옵션이 그 예입니다.
$ currency -> config ( ' format ' , ' 1 ' ); from() 또는 source() 에서 사용하여 기본 통화를 설정할 수 있습니다. 방법은 동일합니다.
! 참고 : 각 드라이버는 자체 기본 기본 통화를 설정합니다. Fixerio는
EUR기본 통화로 사용하고 CurrencyLayer는USD사용합니다.
대부분의 서비스를 사용하면 유료 계획에서 기본 통화 만 변경할 수 있습니다. 현재 계획이 기본 통화를 변경할 수없는 경우 운전자는 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() endpoints는 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% 테스트 범위를 위해 노력하고 있으므로 코드에 대한 테스트를 추가하십시오.