rych/bytesize

Utility component for nicely formatted file sizes

v1.0.0 2014-04-04 18:06 UTC

This package is auto-updated.

Last update: 2024-02-23 10:53:26 UTC


README

Latest Version on Packagist Software License Build Status Quality Score Total Downloads

ByteSize is a utility component for formatting file sizes in various formats.

Requirements

  • PHP 5.3+
  • BCMath extension

Install

Via Composer

$ composer require rych/bytesize

Usage

Basic usage is very simple. Create an instance of Rych\ByteSize\ByteSize and call its format() method.

<?php

// Default formatter is metric (kilobyte = 1000 bytes)
$bytesize = new \Rych\ByteSize\ByteSize;

// Outputs 1.44MB
echo $bytesize->format(1440000);

The default formatter may be customized as well, using either the \Rych\ByteSize\Formatter\Metric or \Rych\ByteSize\Formatter\Binary classes. The metric formatter is based on a 1000-byte kilobyte and uses standard SI suffixes (kB, MB, GB, TB, etc). The binary formatter is based on a 1024-byte kilobyte and uses the standard binary suffixes (KiB, MiB, GiB, TiB, etc). Both formatters use a default precision of 2 significant digits in the formatted output, but that can be changed to any number in the range 0-10 inclusive.

<?php

// Use the binary formatter with a default precision of 1
$formatter = new \Rych\ByteSize\Formatter\Binary;
$formatter->setPrecision(1);
$bytesize = new \Rych\ByteSize\ByteSize($formatter);

// Outputs 1.4MiB
echo $bytesize->format(1509949);

Precision can also be set at call time via the second argument to the format() methods.

If you don't care for all this OO stuff, the core \Rych\ByteSize class also provides two static methods: formatMetric() and formatBinary(). The method signatures are the same as the standard format() methods.

<?php

use \Rych\ByteSize\ByteSize;

// Static methods also work in a pinch
echo ByteSize::formatMetric(1440000); // 1.44MB
echo ByteSize::formatBinary(1509949); // 1.44MiB

Testing

$ vendor/bin/phpunit -c phpunit.dist.xml

License

The MIT License (MIT). Please see License File for more information.