fadion/fixerio

Fixer.io 的包装器

2.0.0 2018-04-04 15:54 UTC

This package is auto-updated.

Last update: 2024-09-06 13:30:32 UTC


README

这是 Fixer.io 的一个薄包装器,一个提供外汇汇率和货币转换的服务。它提供了一些方法来轻松构造 URL、进行 API 调用并返回响应。

安装

  • 将包添加到您的 composer.json 文件中,然后运行 composer update
{
    "require": {
        "fadion/fixerio": "~1.0"
    }
}

Laravel 用户可以使用 Facade 来更轻松地访问。

  • Fadion\Fixerio\ExchangeServiceProvider::class 添加到您的 config/app.php 文件中的 providers 数组中。
  • config/app.php 文件中的 aliases 数组中添加一个新的别名:'Exchange' => Fadion\Fixerio\Facades\Exchange::class

使用方法

让我们获取以美元为基础的 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();

最后,您可能已经注意到使用了 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

错误处理

为了处理错误,该包提供了 2 个异常。当 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"),
]