amoori/laravel-exchange-rates

用于与exchangeratesapi.io API交互的包装包。

dev-master 2023-02-21 16:37 UTC

This package is auto-updated.

Last update: 2024-09-21 20:12:59 UTC


README

Laravel Exchange Rates

Latest Version on Packagist Build Status Total Downloads PHP from Packagist GitHub license

目录

概述

这是一个简单的Laravel包,用于与exchangeratesapi.io API交互。'Laravel Exchange Rates' 允许您获取最新或历史汇率,并在不同货币之间转换货币价值。

安装

您可以通过Composer安装此包

composer require amoori/laravel-exchange-rates

此包已开发和测试,以确保与以下最低要求兼容

  • PHP 7.2
  • Laravel 5.8

用法

方法

可用货币

$exchangeRates = new ExchangeRate();
$exchangeRates->currencies();

汇率

<?php
$exchangeRates = new ExchangeRate();
$exchangeRates->exchangeRate('GBP', 'EUR');

注意:如果传递了Carbon日期作为第三个参数,将返回该天的汇率(如果有效)。如果没有传递日期,将使用今天的汇率。

日期范围内的汇率

$exchangeRates = new ExchangeRate();
$exchangeRates->exchangeRateBetweenDateRange('GBP', 'EUR', Carbon::now()->subWeek(), Carbon::now());

货币转换

当传递要转换的货币价值(第一个参数)时,您需要使用该货币的最小面额。例如,1英镑GBP将传递为100(因为1英镑= 100便士)。

$exchangeRates = new ExchangeRate();
$exchangeRates->convert(100, 'GBP', 'EUR', Carbon::now());

注意:如果传递了Carbon日期作为第三个参数,将返回该天的汇率(如果有效)。如果没有传递日期,将使用今天的汇率。

日期范围内货币转换

当传递要转换的货币价值(第一个参数)时,您需要使用该货币的最小面额。例如,1英镑GBP将传递为100(因为1英镑= 100便士)。

$exchangeRates = new ExchangeRate();
$exchangeRates->convert(100, 'GBP', 'EUR', Carbon::now()->subWeek(), Carbon::now());

外观

如果您更喜欢在Laravel中使用外观,可以选择使用提供的ExchangeRate外观而不是手动实例化amoori\LaravelExchangeRates\Classes\ExchangeRate类。

以下示例显示了如何使用外观获取可用货币的示例

<?php
    
    namespace App\Http\Controllers;
    
    use ExchangeRate;
    
    class TestController extends Controller
    {
        public function index()
        {
            return ExchangeRate::currencies();
        }
    }

示例

此示例显示了如何将100便士(1英镑)从英镑转换为欧元。将使用当前汇率(除非已存在此日期的缓存汇率)。

<?php
    
    namespace App\Http\Controllers;
    
    use amoori\LaravelExchangeRates\Classes\ExchangeRate;
    
    class TestController extends Controller
    {
        public function index()
        {
            $exchangeRates = new ExchangeRate();
            return $exchangeRates->convert(100, 'GBP', 'EUR', Carbon::now());
        }
    }

缓存

默认情况下,所有请求到exchangeratesapi.io API的响应都将进行缓存。这可以显著提高性能并减少服务器的带宽。

但是,如果出于任何原因您需要API的新结果而不是缓存结果,可以使用->shouldBustCache()方法。以下示例显示了如何忽略(如果存在)缓存值并发出新的API请求。

<?php
    
    namespace App\Http\Controllers;
    
    use amoori\LaravelExchangeRates\Classes\ExchangeRate;
    
    class TestController extends Controller
    {
        public function index()
        {
            $exchangeRates = new ExchangeRate();
            return $exchangeRates->shouldBustCache()->convert(100, 'GBP', 'EUR', Carbon::now());
        }
    }

注意:缓存通过在从API获取汇率后存储汇率来实现。例如,如果您尝试获取2019年11月20日至2019年11月27日的'GBP'到'EUR'汇率,这些日期之间的汇率将被缓存为单个缓存项。此缓存项仅在您尝试使用完全相同的货币和日期范围获取相同的汇率时检索。

因此,如果您尝试获取2019年11月20日至2019年11月26日的'GBP'到'EUR'汇率,将发出新的API请求,因为日期范围不同。

支持货币

Laravel Exchange Rates支持以下货币(按A-Z顺序排序)

注意:请注意,货币是可用的,因为它们在exchangeratesapi.io API中公开。

测试

vendor/bin/phpunit

安全

如果您发现任何安全相关的问题,请直接通过mail@amoori.co.uk与我联系以报告。

贡献

如果您希望对包进行任何更改或改进,请随时发起拉取请求。

注意:将很快添加贡献指南。

鸣谢

变更日志

查看变更日志以获取关于最新更改的更多信息。

升级

查看升级指南以获取有关如何更新此库到新版本的更多信息。

许可证

MIT许可(MIT)。请参阅许可文件以获取更多信息。