Skip to content

Repository files navigation

CI Pipeline

This is a utility component for parsing, formatting, converting and manipulating byte units in various formats.

Usage

<?php// Bytes manipulation and formatting with explici precisionechoByteUnits\parse('1.42MB')->add('256B')->format('kB/0000'); // outputs 1420.2560kB// Bytes comparisonByteUnits\parse('1.2GB')->isMoreThan('256MB'); // it's true

Parsing

Right now two unit systems are supported:

  • The Metric system that is based on a 1000-byte kilobyte and uses standard SI suffixes (kB, MB, GB, TB, PB, …)
  • The Binary system that is based on a 1024-byte kilobyte and uses binary suffixes (KiB, MiB, GiB, TiB, PiB, …)
<?php// Explicit system selectionechoByteUnits\Metric::bytes(1000)->format(); // outputs 1.00kBechoByteUnits\Binary::bytes(1024)->format(); // outputs 1.00KiB// Implicit selection through parsingByteUnits\parse('1.00kB'); // it's an instance of ByteUnits\Metric// You can also constraint parsing to a specific systemByteUnits\Metric::parse('1.00kB'); // it's an instance of ByteUnits\MetricByteUnits\Binary::parse('1.00kB'); // throws a ByteUnits\ParseException// For each systems there are static constructors, one for each supported unitechoByteUnits\Metric::bytes(1000)->format(); // outputs 1.00kBechoByteUnits\Metric::kilobytes(1)->format(); // outputs 1.00kBechoByteUnits\Metric::megabytes(1)->format(); // outputs 1.00MB// You can switch between systemsechoByteUnits\Binary::bytes(1024)->asMetric()->format(); // outputs 1.02kB

Formatting

In both systems you can format bytes with an appropriate format string

<?php// By defaults it tries to format bytes in the most readable unitechoByteUnits\bytes(1322000)->format(); // outputs 1.32MBechoByteUnits\bytes(132200)->format(); // outputs 132.20kB// You can force the unit using the related suffixechoByteUnits\bytes(1322000)->format('MB'); // outputs 1.32MBechoByteUnits\bytes(1322000)->format('kB'); // outputs 1322.00kBechoByteUnits\bytes(1322000)->format('B'); // outputs 1322000B// You can choose the precision aka the number of digits after the `.`echoByteUnits\bytes(1322123)->format(6); // outputs 1.322123MBechoByteUnits\bytes(1322123)->format('/6'); // outputs 1.322123MBechoByteUnits\bytes(1322123)->format('MB/6'); // outputs 1.322123MBechoByteUnits\bytes(1322123)->format('MB/000000'); // outputs 1.322123MBechoByteUnits\bytes(1322123)->format('GB/9'); // outputs 0.001322123GB// You can specify a separator between then number and the unitsechoByteUnits\bytes(1322000)->format('MB', ''); // outputs 1.32 MBechoByteUnits\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 overflowechoByteUnits\bytes(1322000)->numberOfBytes(); // outputs 1322000

Compare

There are a few methods that could be used to compare bytes in various units and systems

<?phpByteUnits\Metric::kilobytes(1)->isLessThan(ByteUnits\Binary::kilobytes(1)); // it's trueByteUnits\Metric::kilobytes(1)->equals(ByteUnits\Binary::bytes(1000)); // it's trueByteUnits\Metric::kilobytes(1.3)->isGreaterThan(ByteUnits\Binary::kilobytes(1)); // it's true

Manipulate

Also you can add or remove bytes in various units and systems

<?phpechoByteUnits\Binary::kilobytes(1)->remove(ByteUnits\Metric::kilobytes(1))->format(); // outputs 24B// Arithmetic operations always preserves the receiving unit systemechoByteUnits\Binary::kilobytes(1)->add(ByteUnits\Metric::kilobytes(1))->format(); // outputs 1.98KiB// You cannot have negative bytesByteUnits\Metric::kilobytes(1)->remove(ByteUnits\Binary::kilobytes(1))->format(); // throws ByteUnits\NegativeBytesException

Auto Boxing

Most of the methods can take integers or strings and box them to appropriate byte units

ByteUnits\Metric::kilobytes(1)->isLessThan('1KiB'); // it's trueechoByteUnits\Binary::kilobytes(1)->remove('1KiB')->format(); // outputs 24B

Installation via Composer

  • Install Composer to your project root:

    curl -sS https://getcomposer.org/installer | php
  • Add a composer.json file to your project:

    {
    "require": {
    "recruiterphp/byte-units": "^0.6"
    }
    }
  • Run the Composer installer:

    php composer.phar install

Self-Promotion

If you like this project, then consider to:

About

Library to parse, format and convert byte units

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages