eljump/exchange-rate-fork
Composer 安装命令:
composer require eljump/exchange-rate-fork
包简介
Exchange rate of the Central Bank of the Russian Federation. Currency converter. Getting data from the Central Bank's website cbr.ru
关键字:
README 文档
README
Система для получения курсов валют с официального сайта Центрального Банка России https://www.cbr.ru и конвертер валют. Fork.
Возможности пакета
- Получение по средствам API курсов валют с сайта Центробанка России по дате.
- Конвертирование одной валюты в другую.
Требования
- Версия PHP 7.3 и выше.
Установка
Для установки пакета следует выполнить команду:
composer require eljump/exchange-rate-fork
Использование
Ниже приведены примеры использования пакета.
Получение курсов валют
Пример 1
Запрос данных о курсах валют, которые Центробанк России установил на дату 2020-02-19:
use CentralBankRussian\ExchangeRate\CBRClient; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionInvalidParameter; use CentralBankRussian\ExchangeRate\ExchangeRate; $exchangeRate = new ExchangeRate(new CBRClient()); try { $currencyRateCollection = $exchangeRate ->setDate(new DateTime('2020-02-19')) ->getCurrencyExchangeRates(); var_dump($currencyRateCollection); } catch (ExceptionIncorrectData | ExceptionInvalidParameter $e) { echo $e->getMessage(); }
Результат (фрагмент):
object(CentralBankRussian\ExchangeRate\Collections\CurrencyRateCollection)[819]
private 'currencyRates' =>
array (size=35)
'AUD' =>
object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[823]
private 'name' => string 'Австралийский доллар' (length=39)
private 'exchangeRate' => float 42.6046
private 'quantity' => int 1
private 'numericCode' => string '36' (length=2)
private 'symbolCode' => string 'AUD' (length=3)
'AZN' =>
object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[822]
private 'name' => string 'Азербайджанский манат' (length=41)
private 'exchangeRate' => float 37.589
private 'quantity' => int 1
private 'numericCode' => string '944' (length=3)
private 'symbolCode' => string 'AZN' (length=3)
'GBP' =>
object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[824]
private 'name' => string 'Фунт стерлингов Соединенного королевства' (length=77)
private 'exchangeRate' => float 82.7987
private 'quantity' => int 1
private 'numericCode' => string '826' (length=3)
private 'symbolCode' => string 'GBP' (length=3)
'AMD' =>
object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[825]
private 'name' => string 'Армянский драм' (length=27)
private 'exchangeRate' => float 13.327
private 'quantity' => int 100
private 'numericCode' => string '51' (length=2)
private 'symbolCode' => string 'AMD' (length=3)
'BYN' =>
object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[826]
private 'name' => string 'Белорусский рубль' (length=33)
private 'exchangeRate' => float 28.931
private 'quantity' => int 1
private 'numericCode' => string '933' (length=3)
private 'symbolCode' => string 'BYN' (length=3)
...
Пример 2
Запрос данных валюты USD актуальных на дату 2020-07-12:
use CentralBankRussian\ExchangeRate\CBRClient; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionInvalidParameter; use CentralBankRussian\ExchangeRate\ExchangeRate; $exchangeRate = new ExchangeRate( new CBRClient() ); try { $currencyRate = $exchangeRate ->setDate(new DateTime('2020-07-12')) ->getCurrencyExchangeRates() ->getCurrencyRateBySymbolCode('AMD'); var_dump($currencyRate); } catch (ExceptionIncorrectData | ExceptionInvalidParameter $e) { echo $e->getMessage(); }
В этом примере мы запрашиваем коллекцию курсов валют CurrencyRateCollection и при помощи метода getCurrencyRateBySymbolCode('AMD') получаем элемент коллекции для валюты с символьным кодом AMD (Армянский драм).
Результат:
object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[825]
private 'name' => string 'Армянский драм ' (length=267)
private 'exchangeRate' => float 14.6383
private 'quantity' => int 100
private 'numericCode' => string '51' (length=2)
private 'symbolCode' => string 'AMD' (length=3)
Обратите внимание на свойство quantity. Для валюты Армянский драм quantity равняется 100. Это значит, что 100 армянских драм стоят 14.6383 рублей.
Пример 3
Получение курса валюты AMD по отношению к рублю на указанную дату — 2020-09-30:
use CentralBankRussian\ExchangeRate\CBRClient; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionInvalidParameter; use CentralBankRussian\ExchangeRate\ExchangeRate; $exchangeRate = new ExchangeRate( new CBRClient() ); try { $rateInRubles = $exchangeRate ->setDate(new DateTime('2020-09-30')) ->getRateInRubles('AMD'); echo $rateInRubles; } catch (ExceptionIncorrectData | ExceptionInvalidParameter $e) { echo $e->getMessage(); }
Результат:
0.1641
Мы получили курс 1 армянского драма в рублях, который Центробанк РФ установил на дату 2020-09-30.
Конвертация курсов валют
Пример конвертации 73 224 долларов США в Евро по курсу, который был актуален 2020-06-10:
use CentralBankRussian\ExchangeRate\Converter; use CentralBankRussian\ExchangeRate\CBRClient; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionInvalidParameter; use CentralBankRussian\ExchangeRate\ExchangeRate; try { $exchangeRate = new ExchangeRate( new CBRClient() ); $converter = new Converter($exchangeRate); $val = $converter ->setDate(new DateTime('2020-06-10')) ->convert(73224, 'USD', 'EUR'); echo $val; } catch (ExceptionIncorrectData | ExceptionInvalidParameter $e) { echo $e->getMessage(); }
Результат:
65012.87
73 224 долларов США равняется 65 012.87 евро по курсу Центробанка РФ, который был установлен на дату 2020-06-10.
Получение справочника по кодам валют
Пример 1
Получение перечня ежедневных валют:
use CentralBankRussian\ExchangeRate\CBRClient; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData; use CentralBankRussian\ExchangeRate\ReferenceData; $referenceData = new ReferenceData(new CBRClient()); try { $currencyCollection = $referenceData->getCurrencyCodesDaily(); var_dump($currencyCollection); } catch (ExceptionIncorrectData $e) { echo $e->getMessage(); }
Результат (фрагмент):
object(CentralBankRussian\ExchangeRate\Collections\CurrencyCollection)[819]
private 'currencies' =>
array (size=58)
'AUD' =>
object(CentralBankRussian\ExchangeRate\Models\Currency)[822]
private 'name' => string 'Австралийский доллар' (length=39)
private 'nameEng' => string 'Australian Dollar' (length=17)
private 'quantity' => int 1
private 'numericCode' => string '36' (length=2)
private 'symbolCode' => string 'AUD' (length=3)
private 'internalCode' => string 'R01010' (length=6)
private 'internalCommonCode' => string 'R01010' (length=6)
'ATS' =>
object(CentralBankRussian\ExchangeRate\Models\Currency)[818]
private 'name' => string 'Австрийский шиллинг' (length=37)
private 'nameEng' => string 'Austrian Shilling' (length=17)
private 'quantity' => int 1000
private 'numericCode' => string '40' (length=2)
private 'symbolCode' => string 'ATS' (length=3)
private 'internalCode' => string 'R01015' (length=6)
private 'internalCommonCode' => string 'R01015' (length=6)
'AZN' =>
object(CentralBankRussian\ExchangeRate\Models\Currency)[823]
private 'name' => string 'Азербайджанский манат' (length=41)
private 'nameEng' => string 'Azerbaijan Manat' (length=16)
private 'quantity' => int 1
private 'numericCode' => string '944' (length=3)
private 'symbolCode' => string 'AZN' (length=3)
private 'internalCode' => string 'R01020A' (length=7)
private 'internalCommonCode' => string 'R01020' (length=6)
'GBP' =>
object(CentralBankRussian\ExchangeRate\Models\Currency)[824]
private 'name' => string 'Фунт стерлингов Соединенного королевства' (length=77)
private 'nameEng' => string 'British Pound Sterling' (length=22)
private 'quantity' => int 1
private 'numericCode' => string '826' (length=3)
private 'symbolCode' => string 'GBP' (length=3)
private 'internalCode' => string 'R01035' (length=6)
private 'internalCommonCode' => string 'R01035' (length=6)
'AON' =>
object(CentralBankRussian\ExchangeRate\Models\Currency)[825]
private 'name' => string 'Ангольская новая кванза' (length=44)
private 'nameEng' => string 'Angolan new Kwanza' (length=18)
private 'quantity' => int 100000
private 'numericCode' => string '24' (length=2)
private 'symbolCode' => string 'AON' (length=3)
private 'internalCode' => string 'R01040F' (length=7)
private 'internalCommonCode' => string 'R01040' (length=6)
'AMD' =>
object(CentralBankRussian\ExchangeRate\Models\Currency)[826]
private 'name' => string 'Армянский драм' (length=27)
private 'nameEng' => string 'Armenia Dram' (length=12)
private 'quantity' => int 1000
private 'numericCode' => string '51' (length=2)
private 'symbolCode' => string 'AMD' (length=3)
private 'internalCode' => string 'R01060' (length=6)
private 'internalCommonCode' => string 'R01060' (length=6)
'BYN' =>
object(CentralBankRussian\ExchangeRate\Models\Currency)[827]
private 'name' => string 'Белорусский рубль' (length=33)
private 'nameEng' => string 'Belarussian Ruble' (length=17)
private 'quantity' => int 1
private 'numericCode' => string '933' (length=3)
private 'symbolCode' => string 'BYN' (length=3)
private 'internalCode' => string 'R01090B' (length=7)
private 'internalCommonCode' => string 'R01090' (length=6)
...
Пример 1
Получение перечня ежемесячных валют:
use CentralBankRussian\ExchangeRate\CBRClient; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData; use CentralBankRussian\ExchangeRate\ReferenceData; $referenceData = new ReferenceData(new CBRClient()); try { $currencyCollection = $referenceData->getCurrencyCodesMonthly(); var_dump($currencyCollection); } catch (ExceptionIncorrectData $e) { echo $e->getMessage(); }
Результат (фрагмент):
object(CentralBankRussian\ExchangeRate\Collections\CurrencyCollection)[819]
private 'currencies' =>
array (size=85)
'ALL' =>
object(CentralBankRussian\ExchangeRate\Models\Currency)[822]
private 'name' => string 'Албанский лек' (length=25)
private 'nameEng' => string 'Albanian Lek' (length=12)
private 'quantity' => int 100
private 'numericCode' => string '8' (length=1)
private 'symbolCode' => string 'ALL' (length=3)
private 'internalCode' => string 'R01025' (length=6)
private 'internalCommonCode' => string 'R01025' (length=6)
'DZD' =>
object(CentralBankRussian\ExchangeRate\Models\Currency)[818]
private 'name' => string 'Алжирский динар' (length=29)
private 'nameEng' => string 'Algerian Dinar' (length=14)
private 'quantity' => int 100
private 'numericCode' => string '12' (length=2)
private 'symbolCode' => string 'DZD' (length=3)
private 'internalCode' => string 'R01030' (length=6)
private 'internalCommonCode' => string 'R01030' (length=6)
'AOA' =>
object(CentralBankRussian\ExchangeRate\Models\Currency)[824]
private 'name' => string 'Ангольская кванза' (length=33)
private 'nameEng' => string 'Angolan Kwanza' (length=14)
private 'quantity' => int 100
private 'numericCode' => string '973' (length=3)
private 'symbolCode' => string 'AOA' (length=3)
private 'internalCode' => string 'R01040E' (length=7)
private 'internalCommonCode' => string 'R01040' (length=6)
'ARS' =>
object(CentralBankRussian\ExchangeRate\Models\Currency)[823]
private 'name' => string 'Аргентинское песо' (length=33)
private 'nameEng' => string 'Argentine Peso' (length=14)
private 'quantity' => int 10
private 'numericCode' => string '32' (length=2)
private 'symbolCode' => string 'ARS' (length=3)
private 'internalCode' => string 'R01055' (length=6)
private 'internalCommonCode' => string 'R01055' (length=6)
'AFN' =>
object(CentralBankRussian\ExchangeRate\Models\Currency)[825]
private 'name' => string 'Афганский афгани' (length=31)
private 'nameEng' => string 'Afghanistan Afgani' (length=18)
private 'quantity' => int 100
private 'numericCode' => string '971' (length=3)
private 'symbolCode' => string 'AFN' (length=3)
private 'internalCode' => string 'R01065' (length=6)
private 'internalCommonCode' => string 'R01065' (length=6)
'BHD' =>
object(CentralBankRussian\ExchangeRate\Models\Currency)[826]
private 'name' => string 'Бахрейнский динар' (length=33)
private 'nameEng' => string 'Bahraini Dinar' (length=14)
private 'quantity' => int 1
private 'numericCode' => string '48' (length=2)
private 'symbolCode' => string 'BHD' (length=3)
private 'internalCode' => string 'R01080' (length=6)
private 'internalCommonCode' => string 'R01080' (length=6)
'BOB' =>
object(CentralBankRussian\ExchangeRate\Models\Currency)[827]
private 'name' => string 'Боливийский боливиано' (length=41)
private 'nameEng' => string 'Bolivian Boliviano' (length=18)
private 'quantity' => int 10
private 'numericCode' => string '68' (length=2)
private 'symbolCode' => string 'BOB' (length=3)
private 'internalCode' => string 'R01105' (length=6)
private 'internalCommonCode' => string 'R01105' (length=6)
...
Свойства модели CurrencyRate
Описание свойств модели CentralBankRussian\ExchangeRate\Models\CurrencyRate:
| Свойство | Описание |
|---|---|
| $name | Название валюты на русском языке |
| $exchangeRate | Обменный курс валюты, стоимость в рублях $quantity единиц валюты |
| $quantity | Количество или номинал (темрмин ЦБ РФ) валюты, стоимость которой в рублях указана в свойстве $exchangeRate. |
| $numericCode | ISO Цифровой код валюты |
| $symbolCode | ISO Символьный код валюты |
Свойства модели Currency
Описание свойств модели CentralBankRussian\ExchangeRate\Models\Currency:
| Свойство | Описание |
|---|---|
| $name | Название валюты на русском языке. |
| $nameEng | Название валюты на английском языке. |
| $quantity | Количество или номинал (термин ЦБ РФ) валюты, стоимость которой в рублях указана в свойстве $exchangeRate. |
| $numericCode | ISO Цифровой код валюты. |
| $symbolCode | ISO Символьный код валюты. |
| $internalCode | Внутренний код валюты. Код для идентификации валют, является локальным и уникальным идентификатором валюты в данной базе ЦБ РФ. Необходим для использования в качестве параметра для методов GetCursDynamic (GetCursDynamicXML) |
| $internalCommonCode | Внутренний код валюты, являющейся базовым в рамках базы данных ЦБ РФ. Этот код используется для связи, при изменениях кодов или названий фактически одной и той же валюты. |
Ссылка на описание web-сервиса ЦБ РФ
https://www.cbr.ru/development/DWS/
Лицензия (License)
eljump/exchange-rate-fork 适用场景与选型建议
eljump/exchange-rate-fork 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.22k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2023 年 01 月 17 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「currency」 「currency converter」 「cbr.ru」 「exchange rate」 「Central Bank of the Russian Federation」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 eljump/exchange-rate-fork 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 eljump/exchange-rate-fork 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 eljump/exchange-rate-fork 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Tools to convert between .NET and PHP date formats
Encode integer IDs using a preset or customized symbol set
Fixer.io data provider for Peso
TCMB Currenct Converter
Immutable PHP currency converter that's data-agnostic.
Alfabank REST API integration
统计信息
- 总下载量: 1.22k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 27
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-01-17