30 lines
710 B
PHP
30 lines
710 B
PHP
|
<?php
|
||
|
|
||
|
namespace App\Twig;
|
||
|
|
||
|
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||
|
use Twig\Extension\AbstractExtension;
|
||
|
use Twig\TwigFilter;
|
||
|
|
||
|
class AppExtension extends AbstractExtension
|
||
|
{
|
||
|
public function getFilters()
|
||
|
{
|
||
|
return array(
|
||
|
new TwigFilter('formatBytes', array($this, 'formatBytes')),
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param $bytes
|
||
|
* @param int $precision
|
||
|
* @return string
|
||
|
*/
|
||
|
public function formatBytes($bytes, $precision = 2)
|
||
|
{
|
||
|
$size = ['B','kB','MB','GB','TB','PB','EB','ZB','YB'];
|
||
|
$factor = floor((strlen($bytes) - 1) / 3);
|
||
|
return sprintf("%.{$precision}f", $bytes / pow(1024, $factor)) . @$size[$factor];
|
||
|
}
|
||
|
|
||
|
}
|