Femon (шаблонизатор) эксперименты над шаблоном

Как писал ранее раз перевел всё на > PHP8, то можно попробовать шаблонизатор Femon.

Мне он нравится и я его постоянно смотрю, в год раз, — это точно.

Для игры:

public static function render(string $name, array $data = [], $component = false)
{
    self::closing();

    $sh =  TEMPLATES . DIRECTORY_SEPARATOR . UserData::getUserTheme();

    $fenom = new \Fenom(new Fenom\Provider($sh));
    $fenom->setCompileDir(HLEB_GLOBAL_DIRECTORY . '/storage/cache/templates');

    $options = [
        "force_compile" => true,
        "force_include" => true
    ];

    $fenom->setOptions($options);

    $fenom->display('content' . $name . '.tpl', $data);
}

Что могу сказать, он легкий и в некоторых случаях он даже оправдан, но насколько тут?

Я не знаю. Просто пока смотрю.

4 Ответа

  1. Заменить метод render в class Controller и всё будет работать?

    1. Как работать? Он подключится. Берем шаблоны, делаем расширение .tpl и в них всё убираем, а то ошибки будет, он не соберет это дело. Там много работы, шаблоны переписывать надо. Я на примере одной странице сделал это дело, чтобы протестировать и посмотреть разные случаи.

  1. А разве шаблонизатор может быть быстрее чистого php?

    1. Хороший вопрос. Там есть вот что:

      • force_include — стараться по возможности вставить код дочернего шаблона в родительский при подключении шаблона. Повышает производительность, увеличивает размер файлов в кеше, уменьшает количество файлов в кеше.

        • И в тегах: в отличии от {include} тег {insert} не вызывает дочерний шаблон во время отрисовки, а вставляет код дочернего шаблона в родительский на момент компиляции.
      • strip — удаляет лишние пробелы в шаблоне (уменьшает размер кеша).

      • и т.д.

      Если шаблоны достаточно составные, то бывает, что такое (быстрее) наблюдается. Однако, при подключение (не важно чего) а в данном случае классов Fenom будет выделяться дополнительная память. Т.е. в итоге время выполнение может быть быстрее, но количество выделенной памяти однозначно будет больше.