danielme85/laravel-cconverter

Laravel 5 货币转换插件

v0.3.0 2019-09-23 14:04 UTC

This package is auto-updated.

Last update: 2024-08-29 04:03:25 UTC


README

GitHub PHP from Packagist GitHub release GitHub tag Travis (.org) Codecov

为 Laravel 5.5+ 提供的简单货币转换插件 💵
示例用法:https://danielmellum.com/projects/currency-converter

版本测试和需求

如果您在使用最新版本和 Laravel < v5.4 时遇到 composer 需求问题,请尝试 v0.0.7 版本。

请注意

  • 欧洲中央银行不需要任何用户账户,因此默认设置为“api-source”,但与其他商业来源相比,可用的货币数量有限(37种)。根据我的经验,这个来源也是不可预测的,可能会给出空响应。
  • 所有其他数据提供者都是商业的,需要用户账户。它们都提供每月1000次的免费层,假设您理论上缓存结果60分钟,您应该有一些错误空间 👍 缓存默认启用并设置为60分钟。现在从理论上讲,也许应该创建一个简单的 Eloquent 模型,具有列:日期、从、到、汇率等,然后存储历史结果。请注意,根据使用情况,这可能会违反商业数据提供者的用户协议。🤫 🙈

安装

composer require danielme85/laravel-cconverter

配置

如果您想更改默认配置,可以发布此供应商配置文件。

php artisan vendor:publish --provider="danielme85\CConverter\CConverterServiceProvider"

您也可以在本地 .env 文件中更改所有配置变量

CC_API_SOURCE=eurocentralbank
CC_USE_SSL=true
CC_FIXERIO_ACCESS_KEY=
CC_OPENEXCHANGE_APP_ID=
CC_CURRENCYLAYER_ACCESS_KEY=
CC_ENABLE_LOG=false
CC_ENABLE_CACHE=true
CC_CACHE_TIMEOUT=60

用法

有静态类 "快捷方式",用于转换或获取一次性货币系列。

//To convert a value
$valueNOK = Currency::conv($from = 'USD', $to = 'NOK', $value = 10, $decimals = 2);

//To convert a value based on historical data
$valueNOK = Currency::conv($from = 'USD', $to = 'NOK', $value = 10, $decimals = 2, $date = '2018-12-24');

//to get an array of all the rates associated to a base currency.
$rates = Currency::rates(); //defaults to USD

$rates = Currency::rates('NOK');

//Get historical rates
$rates = Currency::rates('NOK', '2018-12-24');

处理多个值

强烈建议在执行多次转换或获取多个货币系列时创建模型实例以及非静态函数 getRates() & convert(),以获得最佳性能。货币汇率存储在提供者模型中,按日期/基础货币进行存储,以便快速轻松访问。

$currency = new Currency();
$values = [1, 3, 4, 5...].
foreach ($values as $value) {
    $valueNOK = $currency->convert($from = 'USD', $to = 'NOK', $value = 10, $decimals = 2);
}

$rates = $currency->getRates('NOK');
foreach ($rates as $rate) {
    $value = $valueNOK * $rate;
}

您可以在创建新实例时覆盖设置。

$currency = new Currency(
    $api = 'yahoo', 
    $https = false, 
    $useCache = false, 
    $cacheMin = 0);
...
$result = Currency:conv(
    $from = 'USD', 
    $to = 'NOK', 
    $value = 10, 
    $decimals = 2, 
    $date = '2018-12-24', 
    $api = 'yahoo', 
    $https = false, 
    $useCache = false, 
    $cacheMin = 0);

使用三位字母的 ISO4217 代码作为到/从货币:[ISO 4217](http://en.wikipedia.org/wiki/ISO_4217)

货币格式化

包含了一个易于使用且功能强大的货币格式化工具 gerardojbaez/money,是 money_format() 的优秀替代品。您可以通过设置 round='money'(货币格式化器覆盖四舍五入)来获取转换的值。

Currency::conv('USD', 'USD', 10, 2);
//Result: 10
Currency::conv('USD', 'USD', 10, 'money');
//Result: $10.00
$currency->convert('USD', 'USD', 10, 'money');
//Result: $10.00

您还可以通过静态 Currency 函数获取货币格式化器本身

$formater = Currency::money($amount = 0, $currency = 'USD');

此货币格式化器还附带了一个方便的辅助函数。

echo moneyFormat(10, 'USD');
//Result: $10.00

有关更多信息和使用方法,请参阅货币格式化器的 GitHub 页面。[货币格式化器 GitHub 页面](https://github.com/gerardojbaez/money)

每个 API 支持的函数

默认 API 是:欧洲中央银行

注意:CurrencyLayer 和 Fixer.io 现在是一家公司,看起来服务已经合并为一个。

免责声明

请注意不同数据源的条款。
[Yahoo 条款](https://policies.yahoo.com/us/en/yahoo/terms/product-atos/yql/index.htm)
[CurrencyLayer 条款](https://currencylayer.com/terms)
[Open Exchange Rates 条款](https://openexchangerates.org/terms)

本代码根据MIT开源许可证发布:[MIT开源许可证](https://open-source.org.cn/licenses/MIT "外部链接")。实际费率和转换率会因数据来源而异。另外,我并不是数学教授,所以您可能不应该用这个代码来做超级严肃的、数十亿美元的 投资。如果您打算把辛苦赚来的数十亿美元投入货币市场,您可能应该使用类似这样的工具:[货币市场](http://www.forex.com/forex.html "外部链接")。