carminemm/units-conversion 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

carminemm/units-conversion

Composer 安装命令:

composer require carminemm/units-conversion

包简介

Convert digital units, temperature, weight and large numbers at a glance

README 文档

README

Use conversion of digital units such as GB or MB, Celsius, Fahrenheit, Kilograms, Ounces, or time conversions like years or months to weeks.

Requirements

  • PHP >= 8.1
  • MIT License. Feel free to use this project. Leave a star ⭐ or support the project!

paypal

Installation

composer require carminemm/units-conversion

Classes available in the bookstore

There are multiple classes that you can use to make multiple conversions, the available ones are shown.

// Conversion of digital units, MB, KB, GB, TB, etc ...
CarmineMM\UnitsConversion\Conversion\DigitalUnitsConversion::class;

// Time conversions days, months, weeks, etc ...
CarmineMM\UnitsConversion\Conversion\TimeConversion::class;

// Weight conversions, ounces, pounds, kilograms, tons, etc ...
CarmineMM\UnitsConversion\Conversion\WeightUnitsConversion::class;

// Conversion de temperature, Celsius, Fahrenheit, Kelvin, Rankine
CarmineMM\UnitsConversion\Conversion\TemperatureUnitsConversion::class;

// Conversion of kilometers, miles, feet, inches, centimeters, etc ...
CarmineMM\UnitsConversion\Conversion\LengthUnitsConversion::class;

All these classes inherit the same configurations and methods shown below:

Use

Units conversion

The basic use of this library is to represent the units passed by parameter and to be able to show them (understandable for users) or convert them, as well as perform operations with them.

use CarmineMM\UnitsConversion\Conversion\DigitalUnitsConversion;
use CarmineMM\UnitsConversion\Conversion\TimeConversion;
use CarmineMM\UnitsConversion\Conversion\WeightUnitsConversion;
use CarmineMM\UnitsConversion\Conversion\TemperatureUnitsConversion;

$digitalUnits = DigitalUnitsConversion::make(12345); // 12.345 bits
$timeUnits = TimeConversion::make(12345); // 12.345 Seconds
$weightUnits = WeightUnitsConversion::make(12345); // 12.345 Milligram
$TemperatureUnits = TemperatureUnitsConversion::make(12345); // 12.345 Celsius

$digitalUnits->to('KB'); // Convert to KB: 1.506
$timeUnits->to('minutes'); // Convert to minutes: 0.2057
$weightUnits->to('hectograms'); // Convert to Hectograms: 0.12345
$TemperatureUnits->toFahrenheit(); // Convert to Fahrenheit: 22253

Show in readable user

You can show the conversions into a more accurate and readable conversion or convert it and show it, delimiting the decimals if necessary. In addition, the bookstore can try to discover the unit of measure dynamically, or passing it by parameter.

use CarmineMM\UnitsConversion\Conversion\DigitalUnitsConversion;
use CarmineMM\UnitsConversion\Conversion\TimeConversion;

$digitalUnits = new DigitalUnitsConversion(12345, 'kb'); // 12.345 Kilobytes
$timeUnits = new TimeConversion('12345 seconds'); // 12.345 Seconds

$digitalUnits->display('bytes') // 12641280 bytes
$timeUnits->show(); // 3.43 hours

Do you want to know which conversions available?

use CarmineMM\UnitsConversion\Conversion\DigitalUnitsConversion;
use CarmineMM\UnitsConversion\Conversion\TimeConversion;

(new TimeConversion)->getAvailableUnits();         // Available units
(new DigitalUnitsConversion)->getAvailableUnits(); // Available units

Methods available for conversion (returns int or float)

The bookstore tries to discover since what unit you want to convert or the destiny of the conversion.

// Fast conversion without instance
//It only admits exact units to conversion, listed in 'getAvailableUnits()'
DigitalUnitsConversion::convert(number: 12323, unit: 'KB', unitTo: 'byte');

// The 'to' method can discover unity although it can be written in different ways
$units->to('GB'); // Turn Gigabyte
$units->to('gb'); // Turn Gigabyte
$units->to('gigabyte'); // Turn Gigabyte
$units->to('gigabytes'); // Turn Gigabyte
$units->to('Gigabytes'); // Turn Gigabyte

Methods available for conversion and display

Like the previous one, the bookstore tries to discover where to convert and to convert. The difference is that this show the name of the conversion.

$temperatureUnits->display('°C');
$digitalUnits->display('KB');
$digitalUnits->display('kilobyte');
$digitalUnits->display('Kilobytes');

$digitalUnits->show(decimals: 3); // Discover the closest unit for conversion and show
$digitalUnits->smartConversion(); // Discover the closest unit for conversion and show

Mathematical conversions

You can perform mathematical operations using the bookstore, and add, subtract or compare different conversion units, for example, add 300 megabytes to 2 gigabytes. Or compare whether 2300 seconds is greater than 130 minutes.

Factory methods for digital units conversion

The DigitalUnitsConversion class provides static factory methods to create instances from specific digital units:

use CarmineMM\UnitsConversion\Conversion\DigitalUnitsConversion;

// Create instances from different digital units
$units = DigitalUnitsConversion::fromBits(1024); // 1024 bits
$units = DigitalUnitsConversion::fromBytes(1024); // 1024 bytes
$units = DigitalUnitsConversion::fromKilobytes(1); // 1 KB
$units = DigitalUnitsConversion::fromMegabytes(1); // 1 MB
$units = DigitalUnitsConversion::fromGigabytes(1); // 1 GB
$units = DigitalUnitsConversion::fromTerabytes(1); // 1 TB
$units = DigitalUnitsConversion::fromPetabytes(1); // 1 PB

These methods provide a more explicit way to create instances from specific digital units, making the code more readable and self-documenting.

Direct conversion methods

In addition to the generic to() method, the DigitalUnitsConversion class provides specific methods for direct conversion to each digital unit:

use CarmineMM\UnitsConversion\Conversion\DigitalUnitsConversion;

$units = DigitalUnitsConversion::make(1024, 'KB'); // 1024 KB

// Direct conversion methods
$bits = $units->toBits(); // Convert to bits
$bytes = $units->toBytes(); // Convert to bytes
$kb = $units->toKilobytes(); // Convert to kilobytes
$mb = $units->toMegabytes(); // Convert to megabytes
$gb = $units->toGigabytes(); // Convert to gigabytes
$tb = $units->toTerabytes(); // Convert to terabytes
$pb = $units->toPetabytes(); // Convert to petabytes

These methods provide a more explicit way to convert between units, making the code more readable and self-documenting.

Adding and subtracting units

use CarmineMM\UnitsConversion\Conversion\DigitalUnitsConversion;

$units = DigitalUnitsConversion::make('2 GB');

$units->add(230, 'MB'); //Add 230 MB to the '2 GB'
$units->add(1098931); // Add 1,098,931 bits to '2 GB'

$units->less('1.3 GB'); // Restar 1.3 GB a los '2 GB'

//The units are stored in the current
$units->getCurrent();

// Or show the remaining after the sums and subtractions
$units->smartConversion();

Compare from units

Buying units can be easy thanks to discover units.

use CarmineMM\UnitsConversion\Conversion\DigitalUnitsConversion;

$units = DigitalUnitsConversion::make('5 GB');

// Compare if the current value is greater than the past by parameter
if ( $units->isGreaterThan(6144, 'MB') ) {
    //...
}

// Less than ...
if ( $units->isLessThan(4000, 'MB') ) {
    //...
}

// Like the smallest
if ( $units->isSameOrLess(4.69, 'GB') ) {
    //...
}
// Equal or greater
if ( $units->isSameOrGreater(5.2, 'GB') ) {
    //...
}

// Exactly the same
if ( $units->same(5, 'GB') ) {
    //...
}

Restore the units

Sometimes when you have an instance and you have done operations with it, it may be necessary to restart, or restore the value, to the original.

use CarmineMM\UnitsConversion\Conversion\DigitalUnitsConversion;

$units = DigitalUnitsConversion::make('5 GB');

$units->less('1 GB');
$units->less('2 GB');

$units->reset(); // Reset to 5 GB

Or you can also double the instance to have a new for other conversions.

use CarmineMM\UnitsConversion\Conversion\DigitalUnitsConversion;

$units = DigitalUnitsConversion::make('5 GB');

$units->less('1 GB');
$units->less('2 GB');

$newUnit = $units->originTo();

carminemm/units-conversion 适用场景与选型建议

carminemm/units-conversion 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 16 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 01 月 30 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 carminemm/units-conversion 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 carminemm/units-conversion 我们能提供哪些服务?
定制开发 / 二次开发

基于 carminemm/units-conversion 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 16
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 22
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-01-30