<?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);
    }
}