2.4 TemplateLoader.php — Работа с шаблонами Smart-компонентовlink

Назначениеlink

Класс TemplateLoader отвечает за:

  • загрузку и сохранение шаблонов Smart-компонентов;
  • генерацию файлов js.js и css.css из шаблонов;
  • формирование fake-шаблонов для вставки в DOM;
  • обновление кэша шаблонов, если они изменились.

Этот класс используется при генерации ответа клиенту, в частности, в режиме vUseMergeConfigGenerate().

Ключевые методыlink

buildObject($hash): arraylink

Основной публичный метод.

  • Принимает хеш страницы (pageHash);
  • Собирает шаблоны из кэша и/или временного контента;
  • Возвращает массив:
[
    'status' => true,
    'hasHash' => true|false,
    'templates' => [...],
    'fakeTemplates' => [...] 
]

getTemplates($path) и getFakeTemplates($path)link

  • Загружают шаблоны из файлов templates.txt и fake.txt, находящихся в папке /simai/cache/.

setTemplates($data, $path) и setFakeTemplates(...)link

  • Сохраняют сериализованные массивы шаблонов в .txt файлы.

processTemplateData() / processCacheData()link

  • Обновляют шаблоны, если есть отличия;
  • Используют метод searchDiff() для определения изменений;
  • При необходимости — сливают старые и новые шаблоны.

getTemplateFiles($data, $hashDir)link

  • Формирует массив путей к CSS и JS-файлам, полученным из шаблонов Smart-компонентов;

  • Используется при генерации единого js.js и css.css.

setCachedFiles($hashDir, $data)link

  • Сохраняет шаблоны в папке /simai/cache/smart//
  • Минифицирует и объединяет файлы;
  • Создает:
    • js.js
    • css.css

Минификацияlink

Используется библиотека MatthiasMullie\Minify:

use MatthiasMullie\Minify\CSS;
use MatthiasMullie\Minify\JS;

Минификация выполняется в методе setFileData($data, $path, $type).

Кэширование по pageHashlink

  • Шаблоны кэшируются в поддиректории /cache/smart/<hash>/;
  • При повторной загрузке — шаблоны берутся оттуда;
  • Если хеш совпадает — повторная генерация не выполняется.

Очисткаlink

clear()link

  • Удаляет templates.txt.

removeDirectory($dir)link

  • Удаляет директорию smart/ (в т.ч. если она устарела).

Безопасностьlink

checkData($data)link

  • Проверяет, является ли файл валидным сериализованным массивом.

Используетсяlink

  • Loader::vUseMergeConfigGenerate() → генерация шаблонов;
  • Серверной логике Smart-компонентов;
  • Для хранения шаблонов fakeTemplates → вставляются в DOM на клиенте.