xdemonme / currency
基于exchangerate.host提供的免费API,xdemonme/currency是一个用于获取当前和历史货币汇率以及加密货币汇率的PHP库。
Requires
- php: >=7.2
- ext-json: *
- guzzlehttp/guzzle: >=6.0
Requires (Dev)
- phpunit/phpunit: >=8.5.23
This package is auto-updated.
Last update: 2024-09-20 13:13:26 UTC
README
此包支持exchangerate.host API密钥。
Currency是一个简单的PHP库,用于获取当前和历史货币汇率以及加密货币汇率,基于exchangerate.host提供的免费API!
要求
- PHP >= 7.2
- guzzlehttp >= 6.0
安装
composer require xdemonme/currency
用法
1. 货币转换
要从一种货币转换为另一种货币,您可以链式调用方法
require 'vendor/autoload.php'; use AmrShawky\Currency; $accessKey = 'YOUR_API_ACCESS_KEY'; Currency::convert() ->setAccessKey($accessKey) ->from('USD') ->to('EUR') ->get();
这将返回转换后的金额或失败时返回 null
。
要转换的金额默认为 1
,您可以指定金额
use AmrShawky\Currency; $accessKey = 'YOUR_API_ACCESS_KEY'; Currency::convert() ->setAccessKey($accessKey) ->from('USD') ->to('EUR') ->amount(50) ->get();
可用方法
- 使用历史汇率
YYYY-MM-DD
转换货币
use AmrShawky\Currency; $accessKey = 'YOUR_API_ACCESS_KEY'; Currency::convert() ->setAccessKey($accessKey) ->from('USD') ->to('EUR') ->date('2019-08-01') ->get();
- 将转换后的金额四舍五入到小数位
use AmrShawky\Currency; $accessKey = 'YOUR_API_ACCESS_KEY'; Currency::convert() ->setAccessKey($accessKey) ->from('USD') ->to('EUR') ->round(2) ->get();
- 您还可以在外汇
default
、银行视图或加密货币之间切换数据源
use AmrShawky\Currency; $accessKey = 'YOUR_API_ACCESS_KEY'; Currency::convert() ->setAccessKey($accessKey) ->from('BTC') ->to('ETH') ->source('crypto') ->get();
2. 实时(最新)汇率
注意:此方法已过时
要获取最新汇率,您可以链式调用方法
use AmrShawky\Currency; $accessKey = 'YOUR_API_ACCESS_KEY'; Currency::rates() ->setAccessKey($accessKey) ->live() ->get(); // ['USD' => 1.215707, ...] Currency::rates() ->setAccessKey($accessKey) ->live() ->source('crypto') ->get(); // ['ETH' => 3398.61, ...]
这将返回所有可用货币的数组或失败时返回 null
。
可用方法
- 就像货币转换一样,您可以链式调用任何可用方法
use AmrShawky\Currency; $accessKey = 'YOUR_API_ACCESS_KEY'; Currency::rates() ->setAccessKey($accessKey) ->live() ->symbols(['USD', 'EUR', 'EGP']) //An array of currency codes to limit output currencies ->base('GBP') //Changing base currency (default: EUR). Enter the three-letter currency code of your preferred base currency. ->amount(5.66) //Specify the amount to be converted ->round(2) //Round numbers to decimal places ->source('ecb') //Switch data source between forex `default`, bank view or crypto currencies. ->get();
3. 历史汇率
历史汇率适用于大多数货币,历史可以追溯到1999年。
use AmrShawky\Currency; $accessKey = 'YOUR_API_ACCESS_KEY'; Currency::rates() ->setAccessKey($accessKey) ->historical('2020-01-01') //`YYYY-MM-DD` Required date parameter to get the rates for ->get(); // ['USD' => 1.1185, ...] Currency::rates() ->setAccessKey($accessKey) ->historical('2021-03-30') ->source('crypto') ->get(); // ['BTC' => 2.0E-5, ...]
与最新汇率相同,您可以链式调用任何可用方法
use AmrShawky\Currency; $accessKey = 'YOUR_API_ACCESS_KEY'; Currency::rates() ->setAccessKey($accessKey) ->historical('2020-01-01') ->symbols(['USD', 'EUR', 'CZK']) ->base('GBP') ->amount(5.66) ->round(2) ->source('ecb') ->get();
4. 时间范围(时间序列)汇率
时间范围(时间序列)是您选择的两个日期之间的每日历史汇率,最大时间范围为365天。这将返回一个数组或失败时返回 null
。
use AmrShawky\Currency; $accessKey = 'YOUR_API_ACCESS_KEY'; Currency::rates() ->setAccessKey($accessKey) ->timeFrame('2021-05-01', '2021-05-02') //`YYYY-MM-DD` Required dates range parameters ->symbols(['USD']) //[optional] An array of currency codes to limit output currencies ->base('GBP') //[optional] Changing base currency (default: EUR). Enter the three-letter currency code of your preferred base currency. ->amount(5.66) //[optional] Specify the amount to be converted (default: 1) ->round(2) //[optional] Round numbers to decimal places ->source('ecb') //[optional] Switch data source between forex `default`, bank view or crypto currencies. ->get(); /** [ '2021-05-01' => [ "USD" => 1.201995 ], '2021-05-02' => [ "USD" => 1.2027 ] ] */
5. 变化(波动)
检索有关货币每日波动的信息,最大时间范围为365天。这将返回一个数组或失败时返回 null
。
use AmrShawky\Currency; $accessKey = 'YOUR_API_ACCESS_KEY'; Currency::rates() ->setAccessKey($accessKey) ->change('2021-03-29', '2021-04-15') //`YYYY-MM-DD` Required dates range parameters ->symbols(['USD']) //[optional] An array of currency codes to limit output currencies ->base('GBP') //[optional] Changing base currency (default: EUR). Enter the three-letter currency code of your preferred base currency. ->amount(5.66) //[optional] Specify the amount to be converted (default: 1) ->round(2) //[optional] Round numbers to decimal places ->source('ecb') //[optional] Switch data source between forex `default`, bank view or crypto currencies. ->get(); /** [ 'USD' => [ "start_rate" => 1.376454, "end_rate" => 1.37816, "change" => -0.001706, "change_pct" => -0.001239 ] ] */
抛出异常
默认行为是在请求过程中发生错误时返回 null
(连接超时、DNS错误、客户端或服务器错误状态码、缺少API成功参数等)。
如果您希望抛出异常,则可以使用 throw
方法,throw
方法返回货币实例,允许您链式调用其他方法
use AmrShawky\Currency; $accessKey = 'YOUR_API_ACCESS_KEY'; Currency::convert() ->setAccessKey($accessKey) ->from('USD') ->to('EUR') ->amount(20) ->throw() ->get();
如果您希望在抛出异常之前执行一些附加逻辑,则可以将闭包传递给 throw
方法
use AmrShawky\Currency; $accessKey = 'YOUR_API_ACCESS_KEY'; Currency::convert() ->setAccessKey($accessKey) ->from('USD') ->to('EUR') ->amount(20) ->throw(function ($response, $e) { // }) ->get();
使用HTTPS
如果您的订阅计划支持HTTPS加密,则可以使用 useHTTPS
方法使用HTTPS协议而不是HTTP
use AmrShawky\Currency; $accessKey = 'YOUR_API_ACCESS_KEY'; Currency::convert() ->setAccessKey($accessKey) ->useHTTPS() ->from('USD') ->to('EUR') ->get();
其他方法
- 您可以使用
withoutVerifying
方法指示在发送请求时不应验证TLS证书
use AmrShawky\Currency; $accessKey = 'YOUR_API_ACCESS_KEY'; Currency::convert() ->setAccessKey($accessKey) ->from('USD') ->to('EUR') ->withoutVerifying() ->get();
- 您可以使用
withOptions
方法指定额外的Guzzle请求选项。withOptions
方法接受一个键/值对的数组
use AmrShawky\Currency; $accessKey = 'YOUR_API_ACCESS_KEY'; Currency::rates() ->setAccessKey($accessKey) ->historical('2021-04-30') ->withOptions([ 'debug' => true, 'timeout' => 3.0 ]) ->get();
- 当给定给方法的第一个参数评估为true时,将执行
when
方法提供的回调
use AmrShawky\Currency; $accessKey = 'YOUR_API_ACCESS_KEY'; Currency::rates() ->setAccessKey($accessKey) ->latest() ->when(true, function ($rates) { // will execute $rates->symbols(['USD', 'EUR', 'EGP']) ->base('GBP'); }) ->when(false, function ($rates) { // won't execute $rates->symbols(['HKD']); }) ->get();
许可证
MIT许可证(MIT)。有关更多信息,请参阅LICENSE。