fallenangelbg/bgncurrencytool 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

fallenangelbg/bgncurrencytool

Composer 安装命令:

composer require fallenangelbg/bgncurrencytool

包简介

Currency convertor through Bulgarian Lev, using BNB official courses

README 文档

README

This tool can convert sums to Bulgarian Lev. The courses are read from the Bulgarian National Bank site. It also can return an array with conversions for a list of currencies.

Usage

As a single converter

Convert 100 000 US Dollars to Bulgarian Lev

<?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);
}

Result:

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

As a mass converter

<?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);
}

Result:

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

External read

The tool read a predefined XML file from the site of the Bulgarian National Bank.

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

The reader only works like this:

<?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
        )        
)

Its good to do this via a cron job. Here's an example of SQL table to have the results saved:

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;

Later, you can do a read to this table to get an array similar to this one:

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

or you can use some cache do read it once a day - Memcached, REDIS, etc. It's important to keep the array in the given format.

Example

In example folder you can find the mentioned examples.

List of currencies

The list of currencies, supported by this tool (and Bulgarian National Bank)

Currency CODE Quantity
Australian Dollar AUD 1
Brazilian Real BRL 10
Canadian Dollar CAD 1
Swiss Franc CHF 1
Chinese Yuan Renminbi CNY 10
Czech Koruna CZK 100
Danish Krone DKK 10
British Pound GBP 1
Hong Kong Dollar HKD 10
Croatian Kuna HRK 10
Hungarian Forint HUF 1000
Indonesian Rupiah IDR 10000
New Israel Shekel ILS 10
Indian Rupee INR 100
Icelandic Krona ISK 100
Japanese Yen JPY 100
South Korean Won KRW 1000
Mexican Peso MXN 100
Malaysian Ringgit MYR 10
Norwegian Krone NOK 10
New Zealand Dollar NZD 1
Philippine Peso PHP 100
Polish Zloty PLN 10
Romanian Leu RON 10
Russian Rouble RUB *
Swedish Krona SEK 10
Singaporean Dollar SGD 1
Thai Baht THB 100
Turkish Lira TRY 10
US Dollar USD 1
South African Rand ZAR 10
Russian Ruble is not used at the moment due to the political situation.

统计信息

  • 总下载量: 6
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-03-16

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固