amrshawky / currency
此包已被废弃,不再维护。未建议替代包。
一个基于exchangerate.host提供的免费API的PHP库,用于当前和历史货币汇率以及加密货币汇率。
1.0.0
2021-05-13 23:41 UTC
Requires
- php: >=7.2
- ext-json: *
- guzzlehttp/guzzle: >=6.0
Requires (Dev)
- phpunit/phpunit: >=8.0
This package is auto-updated.
Last update: 2023-11-14 09:56:51 UTC
README
此包不再维护。
Currency是一个简单的PHP库,用于当前和历史货币汇率以及加密货币汇率,基于免费APIexchangerate.host - 无需API密钥!
要求
- PHP >= 7.2
- guzzlehttp >= 6.0
安装
composer require amrshawky/currency
用法
1. 货币转换
要从一种货币转换为另一种货币,您可以连续调用方法
require 'vendor/autoload.php'; use AmrShawky\Currency; Currency::convert() ->from('USD') ->to('EUR') ->get();
这将返回转换后的金额或失败时返回null
。
要转换的金额默认为1
,您可以指定金额
use AmrShawky\Currency; Currency::convert() ->from('USD') ->to('EUR') ->amount(50) ->get();
可用方法
- 使用历史汇率
YYYY-MM-DD
转换货币
use AmrShawky\Currency; Currency::convert() ->from('USD') ->to('EUR') ->date('2019-08-01') ->get();
- 将转换后的金额四舍五入到小数位
use AmrShawky\Currency; Currency::convert() ->from('USD') ->to('EUR') ->round(2) ->get();
- 您还可以在forex
default
、银行视图或加密货币之间切换数据源
use AmrShawky\Currency; Currency::convert() ->from('BTC') ->to('ETH') ->source('crypto') ->get();
2. 最新汇率
要获取最新汇率,您可以连续调用方法
use AmrShawky\Currency; Currency::rates() ->latest() ->get(); // ['USD' => 1.215707, ...] Currency::rates() ->latest() ->source('crypto') ->get(); // ['ETH' => 3398.61, ...]
这将返回所有可用货币的数组或失败时返回null
。
可用方法
- 就像货币转换一样,您可以连续调用任何可用方法
use AmrShawky\Currency; Currency::rates() ->latest() ->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; Currency::rates() ->historical('2020-01-01') //`YYYY-MM-DD` Required date parameter to get the rates for ->get(); // ['USD' => 1.1185, ...] Currency::rates() ->historical('2021-03-30') ->source('crypto') ->get(); // ['BTC' => 2.0E-5, ...]
与最新汇率相同,您可以连续调用任何可用方法
use AmrShawky\Currency; Currency::rates() ->historical('2020-01-01') ->symbols(['USD', 'EUR', 'CZK']) ->base('GBP') ->amount(5.66) ->round(2) ->source('ecb') ->get();
4. 时间序列汇率
时间序列是您选择的两个日期之间的每日历史汇率,最大时间范围为365天。这将返回数组或失败时返回null
。
use AmrShawky\Currency; Currency::rates() ->timeSeries('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; Currency::rates() ->fluctuations('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; Currency::convert() ->from('USD') ->to('EUR') ->amount(20) ->throw() ->get();
如果您想在抛出异常之前执行一些附加逻辑,可以将闭包传递给throw
方法
use AmrShawky\Currency; Currency::convert() ->from('USD') ->to('EUR') ->amount(20) ->throw(function ($response, $e) { // }) ->get();
其他方法
- 您可以使用
withoutVerifying
方法指示在发送请求时不应验证TLS证书
use AmrShawky\Currency; Currency::convert() ->from('USD') ->to('EUR') ->withoutVerifying() ->get();
- 您可以使用
withOptions
方法指定额外的Guzzle请求选项。withOptions
方法接受键/值对的数组
use AmrShawky\Currency; Currency::rates() ->historical('2021-04-30') ->withOptions([ 'debug' => true, 'timeout' => 3.0 ]) ->get();
when
方法将在第一个参数给定的方法评估为真时执行给定的回调
use AmrShawky\Currency; Currency::rates() ->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。