В который раз задаюсь вопросом каким же должен быть шаблонизатор?
При разработке последнего проекта на enigm'e делал свой шаблонизатор - некий гибрид DLE'шного... получилось очень сыро, но уже тогда задумался о необходимости использовать условия и switch'и...
От концепции блочных тегов я ушёл сразу - крайне неудобная штука имхо... конструкция $tpl->set также не прижилась...
Обработка регулярными выражениями тегов (+ блоков) также крайне неправильна...
ТеорияВот список требований которым он как Я считаю должен удовлетворять:
Замена простых тегов в пределах одного шаблона.
Замена глобальных тегов для всех шаблонов. (например языковых констант)
Использование условий и switch'ей. Обязательно необходимо поддерживать вложенность операторов друг в друга.
Использование определённого набора ф-ций (например translit) и возможность вставки php кода. Набор функций должен расширяться динамически.
Шаблоны необходимо кэшировать, но при этом соблюдая актуальность данных.
Шаблонизатор должен обеспечивать обработку иерархических данных т.е. если из модуля пришёл результат в определённом формате (в моём случае это массив), то шаблонизатор должен автоматически подгрузить необходимые шаблоны и подставить нужные данные.
Дополнительно... при компиляции можно реализовать следующее:
* Автоматически вырезать весь js код и стили из тела шаблона, сжимать всё (в gzip) и сохранять в отдельные файлы.
* Автоматически валидировать html, пробывать "причесать" код.
Основная задача — максимально разграничить труд программера и дизайнера, при этом сохранив чоткую, простую и понятную структуру шаблонов и тегов, в которой смог бы разобраться любой.