andromedalab / fixerio
Fixer.io 的包装器
Requires
- php: >=5.5.0
- ext-json: *
- guzzlehttp/guzzle: ~6.0 || ~7.0
Requires (Dev)
- mockery/mockery: dev-master
- phpunit/phpunit: 4.8.*
- roave/security-advisories: dev-latest
This package is auto-updated.
Last update: 2024-09-06 19:34:35 UTC
README
这是一个针对 Fixer.io 的轻量级包装器,Fixer.io 是一个提供外汇汇率和货币转换的服务。它提供了一些方法来轻松构造 URL,执行 API 调用并返回响应。
安装
- 将包添加到您的 composer.json 文件中,并运行
composer update
{ "require": { "andromedalab/fixerio": "~1.0" } }
Laravel 用户可以使用 Facade 以更方便的方式访问。
- 将
Fadion\Fixerio\ExchangeServiceProvider::class
添加到您的config/app.php
文件中,在providers
数组内。 - 添加一个新的别名:
'Exchange' => Fadion\Fixerio\Facades\Exchange::class
到您的config/app.php
文件中,在aliases
数组内。
使用方法
让我们获取以 USD 为基础货币的 EUR 和 GBP 的汇率
use Fadion\Fixerio\Exchange; use Fadion\Fixerio\Currency; $exchange = new Exchange(); $exchange->key("YOUR_ACCESS_KEY"); $exchange->base(Currency::USD); $exchange->symbols(Currency::EUR, Currency::GBP); $rates = $exchange->get();
默认情况下,基础货币是 EUR
,所以如果它是您的基准货币,那么没有必要设置它。符号也可以省略,因为 Fixer 将返回所有支持货币。
一个没有基础货币和货币的简化示例
$rates = (new Exchange())->key("YOUR_ACCESS_KEY")->get();
使用 historical
选项将返回您指定日期以来的每一天的货币汇率。基础货币和符号可以省略,下面是一个完整示例
$exchange = new Exchange(); $exchange->key("YOUR_ACCESS_KEY"); $exchange->historical('2012-12-12'); $exchange->base(Currency::AUD); $exchange->symbols(Currency::USD, Currency::EUR, Currency::GBP); $rates = $exchange->get();
使用 timeseries
选项将返回日期范围内的每一天的货币汇率。周期不应超过 1 年。基础货币和符号也可以省略,例如
$exchange = new Exchange(); $exchange->key("YOUR_ACCESS_KEY"); $exchange->timeseries('2012-01-01', '2012-12-31'); $exchange->base(Currency::AUD); $exchange->symbols(Currency::USD, Currency::EUR, Currency::GBP); $rates = $exchange->get();
您可能已经注意到了使用 Currency
类与货币作为常量的用法。这只是为了防止由于打字错误而导致的错误,但这完全是可选的。
这
$exchange->base(Currency::AUD); $exchange->symbols(Currency::USD, Currency::EUR, Currency::GBP);
等同于
$exchange->base('AUD'); $exchange->symbols('USD', 'EUR', 'GBP');
使用满足您需求的方法。
响应
响应是一个简单的数组,以货币作为键,以比率作为值。对于如下请求
$rates = (new Exchange())->key("YOUR_ACCESS_KEY")->symbols(Currency::USD, Currency::GBP)->get();
响应将是一个数组
array('GBP' => 0.7009, 'USD' => 1.0666)
您可以使用键作为字符串或使用货币常量来访问它
print $rates['EUR']; print $rates[Currency::GBP];
有一个选项可以将响应处理为一个对象
$rates = (new Exchange())->key("YOUR_ACCESS_KEY")->symbols(Currency::USD, Currency::GBP)->getAsObject(); print $rates->USD; print $rates->GBP;
最后一个选项是将响应作为 Result
类返回。这允许访问从源返回的全部属性集。
$result = (new Exchange())->key("YOUR_ACCESS_KEY")->symbols(Currency::USD, Currency::GBP)->getResult(); $date = $result->getDate(); // The date the data is from $rates = $result->getRates(); // Array of rates as above $usd = $result->getRate(Currency::USD); // Will return null if there was no value
错误处理
为了处理错误,该包提供了两个异常。当 HTTP 请求出错时抛出 ConnectionException
,当 API 返回的响应不符合预期时抛出 ResponseException
。一个带有异常处理的示例
use Fadion\Fixerio\Exchange; use Fadion\Fixerio\Exceptions\ConnectionException; use Fadion\Fixerio\Exceptions\ResponseException; try { $exchange = new Exchange(); $exchange->key("YOUR_ACCESS_KEY"); $rates = $exchange->get(); } catch (ConnectionException $e) { // handle } catch (ResponseException $e) { // handle }
Laravel 使用方法
Laravel 中的使用方法除了 Facade 之外没有变化。这只是一个使用包的更短方式。
use Exchange; use Fadion\Fixerio\Currency; $rates = Exchange::base(Currency::USD)->get();
要使用此 Facade,您应该在您的 config/services.php
文件中设置您的访问密钥。
'fixer'=>[ 'key'=>env("FIXER_ACCESS_KEY"), ]