orkhanahmadov / laravel-currencylayer
为 currencylayer.com 提供的 Laravel 扩展包
Requires
- php: ^7.1
- ext-json: *
- illuminate/container: 5.8.*|^6.0
- illuminate/contracts: 5.8.*|^6.0
- illuminate/database: 5.8.*|^6.0
- illuminate/support: 5.8.*|^6.0
- nesbot/carbon: ^2.24
- orkhanahmadov/currencylayer: ^1.1
Requires (Dev)
- orchestra/testbench: 3.8.*|^4.0
- phpunit/phpunit: ^7.0|^8.0
README
为与 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)。更多信息请参阅许可文件。