fallenangelbg/bgncurrencytool

通过保加利亚列弗进行货币转换,使用BNB官方汇率

1.1.0 2022-03-18 06:36 UTC

This package is auto-updated.

Last update: 2024-09-18 11:45:27 UTC


README

此工具可以将金额转换为保加利亚列弗。汇率来自保加利亚国家银行网站。它还可以返回一个包含货币转换列表的数组。

使用方法

作为单个转换器

将100,000美元转换为保加利亚列弗

<?php
use Fallenangelbg\BGNCurrencyTool\currencyConvertor;
use Fallenangelbg\BGNCurrencyTool\currencyReadExternal;

$BNBPage = "https://www.bnb.bg/Statistics/StExternalSector/StExchangeRates/StERForeignCurrencies/index.htm?download=xml&amp;search=&amp;lang=BG";
$currencyData = array();
try {
    $currencyData = (new currencyReadExternal($BNBPage))->readCurrency();
}
catch (Exception $e) {
    die("Error occurred!" . $e);
}
$sumToBeConverted = 100000;
$sumCurrency = "USD";

$currencyConverterTool = new currencyConvertor($usedCurrencies, $currencyData);
try {
    $convertToLev = $currencyConverterTool->convertToLev($sumToBeConverted, $sumCurrency);
    var_dump($convertToLev);
}
catch (Exception $e) {
    die($e);
}

结果

array(2) {
  ["error"]=>
  string(0) ""
  ["sum"]=>
  float(177947.98)
}

作为批量转换器

<?php
use Fallenangelbg\BGNCurrencyTool\currencyConvertor;
use Fallenangelbg\BGNCurrencyTool\currencyReadExternal;

$usedCurrencies = array(
  "BGN" => "BGN",
  "USD" => "USD",
  "EUR" => "EUR",
);

$currencyData = array();
try {
    $currencyData = (new currencyReadExternal($BNBPage))->readCurrency();
}
catch (Exception $e) {
    die("Error occurred!" . $e);
}
$sumToBeConverted = 100000;
$sumCurrency = "USD";

$currencyConverterTool = new currencyConvertor($usedCurrencies, $currencyData);

try {
    $convertedCurrencies = $currencyConverterTool->currencyCalculate($convertToLev['sum']);
    var_dump($convertedCurrencies);
}
catch (Exception $e) {
    die($e);
}

结果

array(3) {
  ["BGN"]=>
  float(177947.98)
  ["USD"]=>
  float(100000)
  ["EUR"]=>
  float(90983.02)
}

外部读取

工具从保加利亚国家银行网站读取预定义的XML文件。

https://www.bnb.bg/Statistics/StExternalSector/StExchangeRates/StERForeignCurrencies/index.htm?download=xml&amp;search=&amp;lang=BG

读取器仅以此种方式工作

<?php
use Fallenangelbg\BGNCurrencyTool\currencyReadExternal;

$BNBPage = "https://www.bnb.bg/Statistics/StExternalSector/StExchangeRates/StERForeignCurrencies/index.htm?download=xml&amp;search=&amp;lang=BG";
$currencyData = (new currencyReadExternal($BNBPage))->readCurrency();
// Result:
Array
(
    ['EUR'] => Array
        (
            ['name'] => 'Euro'
            ['code'] => 'EUR'
            ['quantity'] => 1
            ['value'] => 0.51129
        )

    ['BGN'] => Array
        (
            ['name'] => 'Bulgarian Lev'
            ['code'] => 'BGN'
            ['quantity'] => 1
            ['value'] => 1
        )

    ['AUD'] => Array
        (
            ['name'] => 'Австралийски долар'
            ['code'] => 'AUD'
            ['quantity'] => 1
            ['value'] => 0.769752
        )

    ['BRL'] => Array
        (
            ['name'] => 'Бразилски реал'
            ['code'] => 'BRL'
            ['quantity'] => 10
            ['value'] => 2.88057
        )
        /* ... */
    ['USD'] => Array
        (
            ['name'] => 'Щатски долар'
            ['code'] => 'USD'
            ['quantity'] => 1
            ['value'] => 0.565029
        )

    ['ZAR'] => Array
        (
            ['name'] => 'Южноафрикански ранд'
            ['code'] => 'ZAR'
            ['quantity'] => 10
            ['value'] => 8.45094
        )        
)

通过cron作业来做这个很好。以下是一个示例SQL表,用于保存结果

CREATE TABLE `currency` (
    `currency_id` smallint(2) NOT NULL,
    `currency_code` varchar(3) COLLATE utf8_unicode_ci NOT NULL,
    `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
    `quantity` mediumint(4) NOT NULL,
    `value` float NOT NULL,
    `date` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

稍后,您可以读取此表以获取类似以下数组

$returnArray["BGN"]['name'] = "Bulgarian Lev";
$returnArray["BGN"]['code'] = "BGN";
$returnArray["BGN"]['quantity'] = 1;
$returnArray["BGN"]['value'] = 1;

或者您可以使用一些缓存每天读取一次 - Memcached,REDIS等。保持数组在给定格式中是很重要的。

示例

示例 文件夹中您可以找到提到的示例。

货币列表

此工具(和保加利亚国家银行)支持的货币列表