apiotrowski / unit-converter
单位转换器是一个基于原始字符串查询转换值的工具。
2.6
2018-11-13 22:48 UTC
Requires
- php: ~7.1
- ext-bcmath: *
Requires (Dev)
- phpunit/phpunit: ~7.4
README
单位转换器是一个基于原始字符串查询转换值的PHP服务。
查询示例:10cm 转换为 ?in
转换器将自动解析支持的转换器并执行计算。在输出中返回新的 值。
值 是一个对象,具有两个属性: 值(字符串),单位(对象)。
手动转换
如果您想不使用转换管理器转换值,可以直接通过调用以下代码片段来完成:
(new LengthConverter())->convertTo(new Value(10, UnitFactory::build(LengthUnit::CENTIMETRE)), UnitFactory::build(LengthUnit::INCH));
当前实现在内的转换器列表
- 长度转换器(单位:ml, km, m, cm, in, ft)
- 重量转换器(单位:t, kg, g, dag, lbs, oz)
如何使用它
单位转换器非常简单易用,易于扩展。以下示例展示了如何使用此工具。
$convertManager = new ConvertManager(new ArrayCollection([ new LengthConverter(), new WeightConverter() ]), new QueryResolver()); $convertedValue = $convertManager->convert('10cm to ?in');
调用 convert() 函数后,所有魔法都在内部发生。首先解析查询到 PHP 表单,选择应使用的转换器,最后将值转换为目标单位。
在输出($convertedValue)中,您将获得包含结果的 值 对象。
计算值时,工具使用 BC Math 库。
工具在 PHPUnit 中进行了测试,因此应该没有任何错误。
如何扩展单位转换器
要扩展转换器,用户需要
-
创建一个新的转换器类和单位类
-
将创建的单位类添加到 UnitFactory 类中支持的单位列表中
-
在初始化 ConvertManager 时,将您的转换器类添加到支持的转换器列表中
支持的PHP版本
- PHP 7.0,需要安装 BC Math 扩展