В интернетах много споров- а нужен ли шаблонизатор. Много за и много против. Я не считаю абсолютно верной ни одну из сторон, но я в лагере тех, кто им пользуется. Можно ли обойтись и без него? можно. С ним удобнее? удобнее.
С шалонизатором вообще идя простая- облегчить работу с дизайном и представлением, отделив код логики, от кода отвечающего за шаблон. Всё было бы просто, но есть периферийные области, которые сложно однозначно отнести в одну из категорий. К примеру меню- там и куча пхп кода, отвечающего за подменю, активные вкладки и тп, и много html шаблона. Или функции вроде наследования шаблона и включения других файлов в шаблон.
Я смотрел много порталов с различными вариантами, и наблюдал такую картинку:
1. Я умный. шаблонизатор, минимум функций, типо - присвоить переменной значение, скомпилировать, всё. Всё просто и лаконично. Но при увеличении сложности это превращалось в ***но, так как начинают с помощью пхп реализовывать функции, которые должен выполнять шалонизатор. Нужно наследование шаблона? Перекрытие переменной новым значением? Вывод массива или параметра объекта? Всё это будет не обычным {print $obj.val} а 10-15 строчек в скрипте и будет писаться постоянно и везде. И пусть будет куча постороннего мусора в коде, который можно убрать тупо дописав шалонизатор или функции к нему- но нет, я же умный, мне не надо этого.
2. ТруСмарти - смарти сам по себе убог. Он пропагандирует то, что весь код логики можно, а значит будут писать в шаблоне. Доходит до того, что парсер валюты с curl, операции с базой будет в шаблоне. Отлично отделили. + Он сложный и тяжёлый. Но всё равно будут люди которые рады такой 'гибкости'.
3. Яжпрограмист- Нативный пхп. Тоже не богат функциями, всё пишется на голом пхп. Хз, но меня убивает писать 10 строчек пхп с 5-7 операторами, где можно просто написать 2 функции шалонизатора. И проще и красивее и легче в восприятии. Но нет, основная мысль - оно медленнее, зачем писать то, что реализует сам пхп, и логику легче понять когда операторов 10 а не один, а то вдруг забудешь что {$var} выводит переменную, а не создаёт файл с таким названием.
4. Яж самый умный . Есть люди, которые считают что есть какие то стандарты надёжности и всё должно быть по ним. По этому шаблонизатор превращается в сложную штуку, к примеру xls, который громоздок и не удобен но зато с ошибками работать просто не будет. Или прослойка через ооп, где нельзя передать переменную напрямую, не описанную в классе шаблона.
Моё имхо- смартистиль очень приятный и лаконичный, но его функционал и реализация не совсем гуд. Есть альтернативный шаблонизатор Fenom . Если можете писать и без него, главное не выдавайте УГ код за конфетку и помните- шаблонизатор только инструмент.