Само собой, но сам факт что хоть это и ужас в десятой степени, факт что в принципе "пока что" всё в норме
Всё что угодно можно легко превратить (тебе ли с твоим стажем на форуме не знать) Просветление у меня не в этом, это я давно знаю, а вот что есть те кто согласны со мной в этом, это сюрприз
Мне в шаблонизаторах не нравится 2 момента. По определению шаблонизатора надо отделить мух от котлет, т.е. в html не должно быть никакой логики, а в коде не должно быть вывода ни одного пробела. Почти все шаблонизаторы грешат мухами в котлетах. И обычно эти мухи выглядят так: 1. Использование в шаблоне циклов, типа foreach. Есть шаблонизаторы которые даже допускают конструкции циклов for и while. 2. Использование условий для отображения чего-нибудь. Оба пункта по определению - логика и значит основная задача шаблонизатора не выполнена. Отсюда вытекает куча проблем с управлением проектом. Когда мне надо найти верстальщика, причем как правило я требую чтобы он натянул свою работу на проект, а то там столько тонкостей возникает, практически все отказываются делать под шаблон. Но когда видят структуру мои шаблонов, где нету никаких циклов, никаких условий, то соглашаются и делают верстку без проблем. Я пользуюсь php_templates. Хотя проект более не поддерживается (закрыт в 2001 году), тем не менее продукт является законченым и весьма удобным. и самый главный его плюс он является модулем расширения для php. По сравнению со smarty скорость обработки превышает не менее чем в 3 раза. Хотя это справедливо почти для всех шаблонизаторов которые компилятся в модуль, например Blitz и т.д. Сейчас конечно есть и более современные шаблонизаторы и тоже скомпиленые в модуль, но мне ближе старый добрый php_templates - фантастически гибкая вещь.
Carella некоторое время назад думал в точности так же Задача не убрать логику из шаблонов вообще, а отделить логику отображения, от бизнес логики и логики реляционного отображения объектов например Там должна быть логика, но отвечающая за отображение, например есть блок авторизации, если человек авторизован, то там должен быть его ник и выход, если нет, то форма авторизации... будем делать два варианта в разных файлах для верстальщика, а логику обрабатывать где то у себя? я уже напоролся на это, к чему эта каша? то что верстальщик не понимает циклов и простых логических конструкций, это уже его проблемы
Padaboo +1 Циклы, простейшие условия, форматы вывода - это всё задача шаблонизатора, абсолютно не нужная в контроллерах (если о разделении говорить)
У меня всегда один вопрос к людям, которые хотят убрать циклы из шаблона: Как таблицу выводить будете?
Легко! Надо 3 шаблона: таблица (table) с переменной $rows, строка (tr) с переменной $fields, и собственно ячейка (td) с переменной $content. Берем например твой волшебный шаблонизатор, и... PHP: <? $table = new view('table.tpl'); foreach ($data as $row) { $trow = new view('trow.tpl'); foreach ($row as $field) { $tfield = new view('tfield.tpl'); $tfield->content = $field; $trow->fields .= $tfield; } $table->rows .= $trow; } echo $table;
Ну на самом деле он твой... =)) Действительно можно... Конечно, для таблицы 10х5 это будет 1+10+10*5=61 шаблон вместо одного, но должно работать. =)
Оптимизируем: 1) собственно с диска в процессе выполнения скрипта, грузить один раз (загружать и складывать клона в какой-нить "буфер"), 2) кэшировать результат =)
Если это какой нибудь отчет (таблиц этак 10 с результирующими данными), то пункт 2 практически не применим.
отпишусь и по своему Сам использую шаблонизатор на базе текстового процессора, который может включать в себя разнообразные операторы, при добавлении модулей автоматом и операторы добавляются, очень удобно, шаблоны сами в БД ПХП как шаблонизатор достаточно быстр, но мне очень сильно не нравится уменьшение читабельности кода, перемешка хтмл и пхп вообще раздражает, если не использовать разные эвалы, то придется хранить все это дело в файлах, не могу с ходу сказать, чем это хуже, но люблю все централизованно держать в БД