<?php
namespace Shasoft\STwig;
use Shasoft\SamoyedCMG\Service\IPath;
use Shasoft\STwig\ITwig;
use Twig\Environment;
use Twig\Loader\FilesystemLoader;
// Шаблонизатор Twig
class Twig implements ITwig
{
// Указатель на объект работы с шаблонами Twig
protected ?Environment $_twig = null;
// Папка с компилированными шаблонами
protected string $path;
// Конструктор
public function __construct(IPath $path)
{
// Директория кеширования откомпилированных шаблонов
$this->path = $path->temp('twig');
}
// Вывести содержимое
public function render(string $templateName, array $args = []): string
{
// Если шаблонизатор не создан
if( is_null($this->_twig) ) {
// Загрузчик шаблонов
$loader = new FilesystemLoader();
// Добавить все пути
$loader->addPath( __DIR__ . '/../vendor/shasoft/s-demo/@twig', 'main');
// Создать объект шаблонизатора
$this->_twig = new Environment($loader, [
// Директория кеширования откомпилированных шаблонов
'cache' => $this->path,
// Режим отладки
'debug' => false,
]);
}
return $this->_twig->render($templateName, $args);
}
}