apiotrowski/unit-converter

单位转换器是一个基于原始字符串查询转换值的工具。

2.6 2018-11-13 22:48 UTC

This package is auto-updated.

Last update: 2024-09-14 19:04:06 UTC


README

Build Status

单位转换器是一个基于原始字符串查询转换值的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 中进行了测试,因此应该没有任何错误。

如何扩展单位转换器

要扩展转换器,用户需要

  1. 创建一个新的转换器类和单位类

  2. 将创建的单位类添加到 UnitFactory 类中支持的单位列表中

  3. 在初始化 ConvertManager 时,将您的转换器类添加到支持的转换器列表中

支持的PHP版本

  • PHP 7.0,需要安装 BC Math 扩展