mirror of
https://github.com/fenom-template/fenom.git
synced 2023-08-10 21:13:07 +03:00
5.9 KiB
5.9 KiB
How it work
Терминология
- Исходный шаблон - изначальный вид шаблона в специальном синтаксисе
- Код шаблона - резальтат компиляции шаблона, PHP код.
- Провайдер - объект, источник исходных шаблонов.
Классы
-
Fenom
- является хранилищем- шаблонов
- модификаторов
- фильтров
- тегов
- провайдеров
- настройки - маска из опций
- список разрешенных функций
а также обладает соответсвующими setter-ами и getter-ами для настройки.
-
Fenom\Tokenizer
- разбирает, при помощи tokens_get_all, строку на токены, которые хранит массивом. Обладает методами для обработки токенов, работающими как с конкретными токенами так и с их группами. -
Fenom\Render
- простейший шаблон. ХранитClosure
с PHP кодом шаблона- настройки
- зависимости
-
Fenom\Template
- шаблон с функцией компиляции, расширен отFenom\Render
. Содержит различные методы для разбора выражений при помощиFenom\Tokenizer
. -
Fenom\Compiler
- набор правил разбора различных тегов. -
Fenom\Modifier
- набор модификаторов. -
Fenom\Scope
- абстрактный уровень блочного тега. -
Fenom\ProviderInterface
- интерфейс провадеров шаблонов -
Fenom\Provider
- примитивный провайдер шаблонов с файловой системы.
Процесс работы
- При вызове метода
Fenom::display($template, $vars)
шаблонизатор ищет в своем хранилище уже загруженный шаблон. Если шаблона нет - либо загружает код шаблона с файловой системыб либо инициирует его компиляцию. Последовательность компиляции шаблона следующая:- Создается "пустой"
Fenom\Template
- В него загружется исходный шаблон из провайдера
- Исходный шаблон проходит pre-фильтры.
- Начинается разбор исходного шаблона.
- Ищется первый открывающий тег символ -
{
- Смотрятся следующий за
{
символ.- Если
}
или пробельный символ - ищется следующий символ{
- Если
*
- ищется*}
, текст до которого, в последствии, вырезается. - Ищется символ
}
. Полученный фрагмент шаблона считается тегом.
- Если
- Проверяется стек на наличие не закрытых блоков тегов
- Ищется первый открывающий тег символ -
- PHP код проходит post-фильтры
- Код шаблона сохраняеться на файлувую систему
- Код шаблона выполняется для будущего использования
- Создается "пустой"