fallenangelbg / bgncurrencytool
通过保加利亚列弗进行货币转换,使用BNB官方汇率
1.1.0
2022-03-18 06:36 UTC
Requires
- php: >=7.1
- ext-curl: *
- ext-json: *
- ext-libxml: *
- ext-simplexml: *
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&search=&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&search=&lang=BG
读取器仅以此种方式工作
<?php use Fallenangelbg\BGNCurrencyTool\currencyReadExternal; $BNBPage = "https://www.bnb.bg/Statistics/StExternalSector/StExchangeRates/StERForeignCurrencies/index.htm?download=xml&search=&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等。保持数组在给定格式中是很重要的。
示例
在 示例 文件夹中您可以找到提到的示例。
货币列表
此工具(和保加利亚国家银行)支持的货币列表