thunderer/currenz

v0.1.0 2017-09-29 23:34 UTC

This package is auto-updated.

Last update: 2024-09-14 23:54:10 UTC


README

Build Status SensioLabsInsight License Latest Stable Version Total Downloads Scrutinizer Code Quality Code Coverage

Currenz 是一个小巧易用的工具库,为所有在 ISO4217:2015 中定义的货币提供货币价值对象。您可以在 维基百科 上了解更多关于该标准的信息。

安装

此库作为 thunderer/currenz 在 Packagist 上可用。您可以通过在项目目录中执行以下命令使用 Composer 安装它:

composer require thunderer/currenz=^0.1

用法

每种货币都有自己的专用类,并实现了公共接口。有多种方法可以使用其三位字母代码创建给定货币类的实例

use Thunder\Currenz\Currency\PLN;
use Thunder\Currenz\Currency\USD;

$usd = new USD();
$usd = Currenz::USD();
$usd = Currenz::createFromCode('USD');

$pln = new PLN();
$pln = Currenz::PLN();
$pln = Currenz::createFromCode('PLN');

以下方法可以调用以从货币对象中提取所需信息

assert('PLN' === $pln->getCode()); // ISO4217 currency code
assert('Zloty' === $pln->getName()); // regular name
assert(2 === $pln->getDigits()); // number of decimal places
assert(100 === $pln->getUnits()); // number of base units
assert(['POLAND'] === $pln->getCountries()); // list of countries where it is used
assert('985' === $pln->getNumber()); // ISO4217 currency number

二进制文件

此库代码中包含两个可执行脚本

  • bin/generatedata/list_one.xml 中的数据生成 Currenz 类。应在 Composer 的 post-installpost-update 钩子中使用它
  • bin/summary 以易于阅读的表格视图显示该文件中的所有信息。

注意

ISO4217 数据文件

以下从标准网站下载的 ISO4217 数据文件包含在此存储库的 data 目录中

  • list_one.xml:正在使用的货币列表,此文件用于在 bin/generate 脚本中生成所有类
  • list_one.xls:相同数据以 XLS 格式
  • list_two.doc:以 DOC 格式注册的维护机构资金代码信息
  • list_three.xml:从当前版本的标准中删除的历史货币列表
  • list_three.xls:相同数据以 XLS 格式
  • overview_amendments.xlsx:标准的修订列表
  • schema.xsd:包括 XML 文件的标准的 XSD 架构

非十进制货币

有些货币被称为 非十进制,这意味着它们的 基本单位不是 10 的幂。它们的值非常低,通常会被省略。目前有两种

  • 毛里塔尼亚 1 ouguiya (UM) = 5 khoums
  • 马达加斯加 1 ariary = 5 iraimbilanja

此库严格遵循 ISO4217 标准,因此这两个货币都将显示为具有 100 个基本单位(10^2)的货币。