ashallendesign / exchange-rates
用于与exchangerate.host API交互的包
Requires
- php: ^8.0
- ext-bcmath: *
- ext-json: *
- guzzlehttp/guzzle: ^7.0
- nesbot/carbon: ^2.0
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: ^9.0
- symfony/var-dumper: ^5.3
This package is auto-updated.
Last update: 2024-03-18 21:10:48 UTC
README
目录
概览
Exchange Rates 是一个简单的PHP包,用于与 exchangerate.host API 交互。您可以使用它获取最新的或历史汇率,并在不同的货币和加密货币之间转换货币价值。
安装
您可以通过Composer安装此包
composer require ashallendesign/exchange-rates
该包已开发和测试,以满足以下最低要求
- PHP 8.0
使用
方法
可用货币
要获取包支持的可用货币,您可以使用如下方式的 ->currencies()
方法
$exchangeRates = new \AshAllenDesign\ExchangeRates\Classes\ExchangeRate(); $exchangeRates->currencies();
汇率
获取两种货币之间的汇率
要获取一种货币到另一种货币的汇率,您可以使用 ->exchangeRate()
方法。
以下示例展示了如何获取今天'GBP'到'EUR'的汇率
$exchangeRates = new \AshAllenDesign\ExchangeRates\Classes\ExchangeRate(); $result = $exchangeRates->exchangeRate('GBP', 'EUR'); // $result: '1.10086'
注意:如果传递了Carbon日期作为第三个参数,将返回该天的汇率(如果有效)。如果没有传递日期,将使用今天的汇率。
获取超过两种货币之间的汇率
您可以在一次调用中获取多个货币的汇率。如果您需要一次性获取多个汇率,而不想进行多次API调用,这特别有用。
为此,您可以使用 ->exchangeRate()
方法并传递一个包含货币代码字符串的数组作为第二个参数。这将返回一个包含汇率为字符串的数组。
以下示例展示了如何获取今天'GBP'到'EUR'和'USD'的汇率。
$exchangeRates = new \AshAllenDesign\ExchangeRates\Classes\ExchangeRate(); $result = $exchangeRates->exchangeRate('GBP', ['EUR', 'USD']); // $result: [ // 'EUR' => '1.10086', // 'USD' => '1.25622' // ];
日期范围内的汇率
获取两种货币之间的汇率
要获取给定日期范围内两种货币之间的汇率,您可以使用 ->exchangeRateBetweenDateRange()
方法。
以下示例展示了如何获取过去3天'GBP'到'EUR'的汇率。
$exchangeRates = new \AshAllenDesign\ExchangeRates\Classes\ExchangeRate(); $result = $exchangeRates->exchangeRateBetweenDateRange( 'GBP', 'EUR', Carbon::now()->subWeek(), Carbon::now() ); // $result: [ // '2020-07-07' => [ // 'EUR' => '1.1092623405', // ], // '2020-07-08' => [ // 'EUR' => '1.1120625424', // ], // '2020-07-09' => [ // 'EUR' => '1.1153867604', // ], // ];
获取超过两种货币之间的汇率
要获取一次调用中多个货币的汇率,您可以将包含货币代码字符串的数组作为 ->exchangeRateBetweenDateRange()
方法的第二个参数传递。
以下示例展示了如何获取过去3天'GBP'到'EUR'和'USD'的汇率。
$exchangeRates = new \AshAllenDesign\ExchangeRates\Classes\ExchangeRate(); $result = $exchangeRates->exchangeRateBetweenDateRange( 'GBP', ['EUR', 'USD'], Carbon::now()->subDays(3), Carbon::now(), ); // $result: [ // '2020-07-07' => [ // 'EUR' => '1.1092623405', // 'USD' => '1.2523571825', // ], // '2020-07-08' => [ // 'EUR' => '1.1120625424', // 'USD' => '1.2550737853', // ], // '2020-07-09' => [ // 'EUR' => '1.1153867604', // 'USD' => '1.2650716636', // ], // ];
货币转换
当传递要转换的货币价值(第一个参数)时,您需要以该货币的最小单位进行传递。例如,1英镑GBP将传递为100(因为1英镑=100便士)。
在两种货币之间转换
类似于您可以从一种货币获取到另一种货币的汇率,您也可以将货币价值从一种货币转换为另一种货币。为此,您可以使用 ->convert()
方法。
以下示例展示了如何以今天的汇率将1英镑'GBP'转换为'EUR'。
$exchangeRates = new \AshAllenDesign\ExchangeRates\Classes\ExchangeRate(); $result = $exchangeRates->convert(100, 'GBP', 'EUR'); // $result: '110.15884906'
注意:如果将碳日期对象作为第三个参数传递,将使用该天的汇率(如果有效)。如果没有传递日期,将使用今天的汇率。
在超过两种货币之间转换
您还可以使用->convert()
方法将货币价值从一种货币转换为多种货币。为此,您可以传递一个包含货币代码字符串的数组作为第三个参数。
以下示例展示了如何以今天的汇率将1英镑'GBP'转换为'EUR'和'USD'。
$exchangeRates = new \AshAllenDesign\ExchangeRates\Classes\ExchangeRate(); $result = $exchangeRates->convert( 100, 'GBP', ['EUR', 'USD'], Carbon::now(), ); // $result: [ // 'EUR' => '110.15884906', // 'USD' => '125.30569081' // ];
日期范围内的货币转换
当传递要转换的货币价值(第一个参数)时,您需要以该货币的最小单位进行传递。例如,1英镑GBP将传递为100(因为1英镑=100便士)。
在日期范围内在两种货币之间转换
类似于获取日期范围内的汇率,您还可以使用汇率将一种货币的价值转换为另一种货币。为此,您可以使用->convertBetweenDateRange()
方法。
以下示例展示了如何使用过去3天的汇率将1英镑'GBP'转换为'EUR'。
$exchangeRates = new \AshAllenDesign\ExchangeRates\Classes\ExchangeRate(); $exchangeRates->convertBetweenDateRange( 100, 'GBP', 'EUR', Carbon::now()->subDays(3), Carbon::now() ); // $result: [ // '2020-07-07' => [ // 'EUR' => '110.92623405', // ], // '2020-07-08' => [ // 'EUR' => '111.20625424', // ], // '2020-07-09' => [ // 'EUR' => '111.53867604', // ], // ];
在日期范围内在超过两种货币之间转换
您还可以使用->convertBetweenDateRange()
方法,通过日期范围内的汇率将货币价值从一种货币转换为多种货币。为此,您可以传递一个包含货币代码字符串的数组作为第三个参数。
以下示例展示了如何使用过去三天的汇率将1英镑'GBP'转换为'EUR'和'USD'。
$exchangeRates = new ExchangeRate(); $result = $exchangeRates->exchangeRateBetweenDateRange('GBP', ['EUR', 'USD'], Carbon::now()->subDays(3), Carbon::now()); // $result: [ // '2020-07-07' => [ // 'EUR' => '110.92623405', // 'USD' => '125.23571825', // ], // '2020-07-08' => [ // 'EUR' => '111.20625424', // 'USD' => '125.50737853', // ], // '2020-07-09' => [ // 'EUR' => '111.53867604', // 'USD' => '126.50716636', // ], // ];
测试
要运行包的测试,可以使用以下命令:
composer test
安全性
如果您发现任何与安全相关的问题,请直接通过mail@ashallendesign.co.uk与我联系以报告。
贡献
如果您希望对包进行任何更改或改进,请随意提交拉取请求。
在提交您的拉取请求之前,请遵循以下指南以贡献到这个库:
- 为添加的任何新功能编写测试。如果您正在更新现有代码,请确保现有测试通过,并在需要时编写更多测试。
- 遵循PSR-12编码标准。
- 将所有拉取请求提交到
master
分支。
致谢
- 艾什·艾伦
- Jess Pickup(Logo)
- 所有贡献者
变更日志
查看变更日志以获取有关最新更改的更多信息。
升级
查看升级指南以获取有关如何将此库更新到新版本的更多信息。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可文件。