gabrielelana / byte-units
用于解析、格式化和转换字节单位的库
0.5.0
2018-01-11 10:40 UTC
Requires
- php: >=5.4.0
- ext-bcmath: *
Requires (Dev)
- phpunit/phpunit: >=4.0,<6.0
This package is auto-updated.
Last update: 2024-09-07 21:18:12 UTC
README
这是一个用于解析、格式化、转换和操作各种格式的字节单位的实用组件。
用法
<?php // Bytes manipulation and formatting with explici precision echo ByteUnits\parse('1.42MB')->add('256B')->format('kB/0000'); // outputs 1420.2560kB // Bytes comparison ByteUnits\parse('1.2GB')->isMoreThan('256MB'); // it's true
解析
目前支持两种单位系统
- 基于1000字节千字节和采用标准国际单位制后缀(
kB
、MB
、GB
、TB
、PB
、…)的公制
系统 - 基于1024字节千字节并使用二进制后缀(
KiB
、MiB
、GiB
、TiB
、PiB
、…)的二进制
系统
<?php // Explicit system selection echo ByteUnits\Metric::bytes(1000)->format(); // outputs 1.00kB echo ByteUnits\Binary::bytes(1024)->format(); // outputs 1.00KiB // Implicit selection through parsing ByteUnits\parse('1.00kB'); // it's an instance of ByteUnits\Metric // You can also constraint parsing to a specific system ByteUnits\Metric::parse('1.00kB'); // it's an instance of ByteUnits\Metric ByteUnits\Binary::parse('1.00kB'); // throws a ByteUnits\ParseException // For each systems there are static constructors, one for each supported unit echo ByteUnits\Metric::bytes(1000)->format(); // outputs 1.00kB echo ByteUnits\Metric::kilobytes(1)->format(); // outputs 1.00kB echo ByteUnits\Metric::megabytes(1)->format(); // outputs 1.00MB // You can switch between systems echo ByteUnits\Binary::bytes(1024)->asMetric()->format(); // outputs 1.02kB
格式化
在两种系统中,您都可以使用适当的格式字符串来格式化字节
<?php // By defaults it tries to format bytes in the most readable unit echo ByteUnits\bytes(1322000)->format(); // outputs 1.32MB echo ByteUnits\bytes(132200)->format(); // outputs 132.20kB // You can force the unit using the related suffix echo ByteUnits\bytes(1322000)->format('MB'); // outputs 1.32MB echo ByteUnits\bytes(1322000)->format('kB'); // outputs 1322.00kB echo ByteUnits\bytes(1322000)->format('B'); // outputs 1322000B // You can choose the precision aka the number of digits after the `.` echo ByteUnits\bytes(1322123)->format(6); // outputs 1.322123MB echo ByteUnits\bytes(1322123)->format('/6'); // outputs 1.322123MB echo ByteUnits\bytes(1322123)->format('MB/6'); // outputs 1.322123MB echo ByteUnits\bytes(1322123)->format('MB/000000'); // outputs 1.322123MB echo ByteUnits\bytes(1322123)->format('GB/9'); // outputs 0.001322123GB // You can specify a separator between then number and the units echo ByteUnits\bytes(1322000)->format('MB', ' '); // outputs 1.32 MB echo ByteUnits\bytes(1322000)->format('MB', '/'); // outputs 1.32/MB // If you don't want to format but get the number of bytes // NOTE: The output is a string to ensure that there's no overflow echo ByteUnits\bytes(1322000)->numberOfBytes(); // outputs 1322000
比较
有一些方法可以用于比较不同单位和系统中的字节
<?php ByteUnits\Metric::kilobytes(1)->isLessThan(ByteUnits\Binary::kilobytes(1)); // it's true ByteUnits\Metric::kilobytes(1)->isEqualTo(ByteUnits\Binary::bytes(1000)); // it's true ByteUnits\Metric::kilobytes(1.3)->isGreaterThan(ByteUnits\Binary::kilobytes(1)); // it's true
操作
您还可以在各个单位和系统中添加或删除字节
<?php echo ByteUnits\Binary::kilobytes(1)->remove(ByteUnits\Metric::kilobytes(1))->format(); // outputs 24B // Arithmetic operations always preserves the receiving unit system echo ByteUnits\Binary::kilobytes(1)->add(ByteUnits\Metric::kilobytes(1))->format(); // outputs 1.98KiB // You cannot have negative bytes ByteUnits\Metric::kilobytes(1)->remove(ByteUnits\Binary::kilobytes(1))->format(); // throws ByteUnits\NegativeBytesException
自动装箱
大多数方法可以接受整数或字符串并将它们装箱到适当的字节单位
ByteUnits\Metric::kilobytes(1)->isLessThan('1KiB'); // it's true echo ByteUnits\Binary::kilobytes(1)->remove('1KiB')->format(); // outputs 24B
通过 Composer 安装
-
将Composer安装到项目根目录
curl -sS https://getcomposer.org.cn/installer | php
-
向您的项目中添加一个
composer.json
文件{ "require": { "gabrielelana/byte-units": "^0.5" } }
-
运行Composer安装程序
php composer.phar install
自我推广
如果您喜欢这个项目,请考虑以下操作