ИМХО.
Шаблонизатор нужен для разделения логики и верстки (логика в файле php, верстка подключается из файла html) вот и всё.
Дальше уже идут костыли.
Например что бы сделать в шаблоне <? echo $var;?> нужно шаблон инклюдить. И вроде всё отлично, подключил шаблон через include и верстка в отдельном файле и логика работает, если нужно, стильно, удобно, молодежно.
А потом появляется задача, где шаблон нужно вывести циклом (например список пользователей с аватарками и прочей инфой). Вы же не будете в цикле подключать файл 150 раз что бы его выполнить.
Вот тут и появляются теги {$name}. Сначала загрузили в переменную шаблон, а потом в цикле сколько угодно раз её обработали. Так же с условиями.
Вообще меня тоже интересует этот вопрос, как все сделать правильно =)
Сейчас использую примерно такую конструкцию.
если нужно подключить и сразу обработать без цикла, то подключаю так
$tags;
echo $Tpl->Load('index.html')->Tags($tags);
если циклом то сначала подключаю шаблон, потом обрабатываю.
$html = $Tpl->load('index.html');
while ($row = $query->fetch()) {
echo $Tpl->Tags($html,$row);
}
Обрабатываются только переменные {$var} и константы {CONST}, условий пока что не делал, да и не уверен что они нужны.
Под капотом $Tpl->Tags
preg_match_all - который получает массив с найденными в шаблоне тегами
и str_replace - который заменяет в шаблоне теги из массива preg на теги из массива $row, который передал в цикле.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2