orkhanahmadov/laravel-currencylayer

为 currencylayer.com 提供的 Laravel 扩展包

1.4.0 2019-09-26 19:49 UTC

This package is auto-updated.

Last update: 2024-09-27 02:54:44 UTC


README

Latest Stable Version Latest Unstable Version Total Downloads License

Build Status Test Coverage Maintainability Quality Score StyleCI

为与 currencylayer.com 货币汇率集成而设计的简单 Laravel 扩展包。

需求

  • PHP 7.1 或更高版本
  • Laravel 5.8 或更高版本

安装

您可以通过 composer 安装此包

composer require orkhanahmadov/laravel-currencylayer

发布包迁移和配置文件

php artisan vendor:publish --provider="Orkhanahmadov\LaravelCurrencylayer\LaravelCurrencylayerServiceProvider"

.env 文件中设置您的 currencylayer.com 访问密钥

CURRENCYLAYER_ACCESS_KEY=your-key-here

您可以在 Currencylayer 控制台 中找到您的访问密钥。

配置

发布配置文件后,它将在 config 目录中以 currencylayer.php 的形式可用

它具有以下设置

  • access_key - currencylayer.com 访问密钥,默认使用 .env 文件中的值
  • https_connection - 如果设置为 true,则所有对 currencylayer API 端点的调用将通过 HTTPS 进行,而不是默认的 HTTP

使用方法

您可以通过类型提示 Orkhanahmadov\LaravelCurrencylayer\Contracts\CurrencyService 来从容器中注入它

use Orkhanahmadov\LaravelCurrencylayer\Contracts\CurrencyService;

class CurrencyController
{
    public function index(CurrencyService $currencyService)
    {
        $currencyService->live('USD', 'EUR');
    }
}

在容器外部,您可以使用 app() 助手创建服务的实例

$currencyService = app('currencylayer');
$currencyService->live('USD', 'EUR');

您还可以使用提供的外观

\Currencylayer::live('USD', 'EUR');

可用方法

所有方法在获取汇率时都会将汇率保存到数据库表中。

live()

此方法从 currencylayer.com 获取实时汇率

$currencyService->live('USD', 'EUR');

第一个参数是源货币,第二个参数是转换货币。您还可以传递 Orkhanahmadov\LaravelCurrencylayer\Models\Currency 实例作为源货币。

use Orkhanahmadov\LaravelCurrencylayer\Models\Currency;

$usd = Currency::where('code', 'USD')->first();
$currencyService->live($usd, 'EUR');

要获取多种货币的实时汇率,请传递多个货币代码

$currencyService->live('USD', 'EUR', 'CHF', 'BTC', 'RUB');
// or
$currencyService->live('USD', ['EUR', 'CHF', 'BTC', 'RUB']);

rate()

此方法从 currencylayer.com 获取给定日期的汇率

$currencyService->rate('USD', '2019-01-25', 'EUR');

第一个参数是源货币,第二个参数是日期,第三个参数是转换货币。您还可以传递 Orkhanahmadov\LaravelCurrencylayer\Models\Currency 实例作为源货币参数和 Carbon\Carbon 实例作为日期参数。

use Carbon\Carbon;
use Orkhanahmadov\LaravelCurrencylayer\Models\Currency;

$usd = Currency::where('code', 'USD')->first();
$today = Carbon::today();
$currencyService->rate($usd, $today, 'EUR');

要获取多种货币的汇率,请传递多个货币代码

$currencyService->rate('USD', '2019-01-25', 'EUR', 'CHF', 'BTC', 'RUB');
// or
$currencyService->rate('USD', '2019-01-25', ['EUR', 'CHF', 'BTC', 'RUB']);

命令

此包包含 2 个命令

php artisan currencylayer:live - 获取实时汇率并输出值。第一个参数是源货币,第二个和后续参数是目标货币

php artisan currencylayer:live USD EUR CHF

这将获取美元兑欧元和美元兑瑞士法郎的实时汇率。

php artisan currencylayer:rate - 获取给定日期的汇率并输出值。第一个参数是源货币,第二个参数是日期,第三个和后续参数是目标货币

php artisan currencylayer:rate USD 2019-01-25 EUR CHF

这将获取 2019-01-25 的汇率,美元兑欧元和美元兑瑞士法郎。

模型

此包包含 2 个数据库模型

  • Orkhanahmadov\LaravelCurrencylayer\Models\Currency - 存储获取到的每个货币代码
  • Orkhanahmadov\LaravelCurrencylayer\Models\Rate - 根据时间戳存储每种货币兑换的汇率

Currency 模型具有 rateFor() 方法,您可以使用它来获取货币汇率。第一个参数是目标货币代码或可以是 Currency 实例。

use Orkhanahmadov\LaravelCurrencylayer\Models\Currency;

$usd = Currency::where('code', 'USD')->first();
$rate = $usd->rateFor('EUR');
// or
$eur = Currency::where('code', 'EUR')->first();
$rate = $usd->rateFor($eur);

这将获取最新的美元兑欧元汇率。

您还可以传递日期或 Carbon\Carbon 实例作为第二个参数以获取该日期的汇率

use Carbon\Carbon;
use Orkhanahmadov\LaravelCurrencylayer\Models\Currency;

$usd = Currency::where('code', 'USD')->first();
$rate = $usd->rateFor('EUR', '2019-01-25');
// or
$today = Carbon::today();
$rate = $usd->rateFor('EUR', $today);

测试

composer test

更新日志

有关最近更改的更多信息,请参阅 更新日志

贡献

有关详细信息,请参阅 贡献

安全性

如果您发现任何与安全相关的问题,请通过电子邮件发送到 ahmadov90@gmail.com,而不是使用问题跟踪器。

致谢

许可协议

MIT许可协议(MIT)。更多信息请参阅许可文件