jordanbrauer/unit-converter

使用这个易于使用、轻量级的软件包将标准单位从一个转换到另一个

0.9.0 2023-08-23 23:47 UTC

README

Latest Stable Version Latest Unstable Version PHP from Packagist composer.lock available license

CI Workflow Code Maintainability Code Coverage Technical Debt Maintenance Packagist


使用此高度可定制、易于使用、轻量级的PHP组件将各种标准单位从一个转换到另一个。

目录

  1. 关于组件
  2. 安装组件
  3. 基本用法
  4. 文档

1. 关于组件

此单位转换组件旨在现代且遵循最佳实践。它还旨在完全符合国际单位制(最终...)。

它默认支持以下类型的测量(更多测量类型的支持已在路线图上)。

  • 面积
  • 数据传输速率 即将推出!
  • 数字存储 新!
  • 能源(功率)
  • 频率
  • 燃油经济性
  • 长度
  • 质量(重量)
  • 平面角(旋转)
  • 压力
  • 速度
  • 温度
  • 时间
  • 体积

您还可以覆盖和自定义默认单位,以及添加您自己的

2. 安装组件

安装组件的最佳方式是使用Composer。有关其他支持的方法,请参阅安装部分的维基文章

$ composer require jordanbrauer/unit-converter

3. 基本用法

使用此组件非常简单,尤其是如果您之前使用过Symfony或Laravel框架。

快速入门

如果您想跳过此组件设置的细节并立即开始,您可以通过静态构造函数或构建器对象构建预配置的转换器,如下所示,

静态构造函数
use UnitConverter\UnitConverter;

$converter = UnitConverter::default(); # simple calculator
$converter = UnitConverter::binary(); # binary calculator (BC math)
构建器
use UnitConverter\UnitConverter;

$converter = UnitConverter::createBuilder()
    ->addSimpleCalculator()
    ->addDefaultRegistry()
    ->build();

然后使用它这样

$converter->convert(1)->from("in")->to("cm"); # (float) 2.54

您就完成了!有关更深入的设置指南,请查看维基

使用示例

以下是一些使用示例,这些示例可能更贴近“现实生活”。请注意,在每个用例中,虽然代码示例是有效且有效的,但为了演示目的,其中包含一些伪代码。

交通摄像头

在这个例子中,假设我们有一个只以英里每小时为单位的交通摄像头。交通摄像头记录每辆过往车辆的时速,以确定它们是否超速,并且如果超速,就拍下它们的牌照作为开罚单的证据。在这种情况下,摄像头捕捉到了每小时59英里的速度。

在这里,我们构建一个新的单位,并给它一个值,表示该单位有多少个存在,

$capturedSpeed = new MilePerHour(59);

接下来,需要进行单位的转换,因为此交通摄像头型号正在一个使用公制系统的国家使用。

如本示例所示,我们正在利用类型提示的强大功能来确保我们只接收到所需测量单位的单位。在闭包内部,我们正在使用该单位最方便且功能强大的方法之一:as()。它允许我们在不直接使用UnitConverterUnitRegistry对象的情况下转换单位,从而提供了更干净、更安全的代码和类型安全的好处。

$isOverSpeedLimit = function (SpeedUnit $speed) {
    return $speed->as(new KilometrePerHour) > 50;
};

if ($isOverSpeedLimit($capturedSpeed)) { # (bool) true
    TrafficCamera::snapPhoto();
}

以文字形式显示转换结果

有时您可能需要为值提供本地化支持。该组件通过使用 intl 扩展使这变得轻而易举。只需选择使用 spellout 方法代替 to。您还可以提供可选的区域设置作为第二个参数进行翻译。

$converter->convert(1)->from('in')->spellout('cm');       # (string) two point five four
$converter->convert(1)->from('in')->spellout('cm', 'fr'); # (string) deux virgule cinq quatre

4. 文档

本项目中包含两种深入的文档:用户文档和API文档。使用您需要的任何一个来帮助解答您的问题!

用户文档

设置指南、深入示例、教程和说明,这些是针对希望将其集成到其项目中的用户的组件。

用户文档

API 文档

如果您想为您的项目扩展和修改此组件,这些页面将借助强大的 dockblocks 功能,让您深入了解组件的工作原理。

API 文档