* @license https://opensource.org/licenses/gpl-license.php GNU Public License * @link https://jcktrue.dk */ class AppExtension extends AbstractExtension { /** * Extend the filters * * @return TwigFilter[] */ public function getFilters(): array { return array( new TwigFilter('formatBytes', array($this, 'formatBytes')), ); } /** * Format a file size to be human readable * * @param int $bytes Number of bytes * @param int $precision Precision * * @return string Formatted string */ public function formatBytes($bytes, $precision = 2) { $size = ['B','kB','MB','GB','TB','PB','EB','ZB','YB']; $fact = (int)(floor((strlen((string)$bytes) - 1) / 3)); return sprintf("%.{$precision}f", $bytes / pow(1024, $fact)) . $size[$fact]; } }