homepage/bundle/TwigExtensionBundle/TwigExtension.php
Anton Vakhrushev 7676933e40 Обновил php, composer
И сделал косметические правки бандлов
2020-11-08 11:18:56 +03:00

45 lines
989 B
PHP

<?php
declare(strict_types=1);
namespace Homepage\TwigExtensionBundle;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
class TwigExtension extends AbstractExtension
{
private $outputDir;
public function __construct(string $outputDir)
{
$this->outputDir = $outputDir;
}
public function getFunctions(): array
{
return [
new TwigFunction('hashed_asset', [$this, 'createHashedFileLink']),
];
}
public function createHashedFileLink(string $path): string
{
$fullPath = $this->join($this->outputDir, $path);
$realPath = realpath($fullPath);
if (!file_exists($realPath)) {
return sprintf('%s?v=%s', $path, time());
}
$hash = md5_file($realPath);
return sprintf('%s?v=%s', $path, $hash);
}
private function join(string $base, string $path): string
{
return $path ? rtrim($base, '/').'/'.ltrim($path, '/') : $base;
}
}