В очередной раз подниму тему Template Engine в PHP. Боюсь будет холивар…
Последнее время замечаю тенденцию, что начинающий PHP разработчик (скорбя сердцем скажу, что не только начинающий) считает своим долгом в каждый проект всунуть Smarty или иной Template Engine, а затем с пеной у рта доказывать, что это необходимо для разделения логики и отображения. Так вот – для начала Вы должны у себя в голове разделить логику от представления, а не вопить – “я смарти юзаю – я разделяю”.
Еще одно заблуждение – верстальщик/дизайнер не понимает тэгов PHP, но Smarty он поймет – спросите у знакомых верстальщиков, особых трудностей они не испытывают при использовании PHP, и как пример могу привести WordPress – уж очень много тем для него бродит по и-нету, и отнюдь не PHP разработчиками написанные.
Приведу пример из того же мануала по смарти:
- {php} – Тэг {php} позволяет вставлять PHP-код прямо в шаблон. Конечно он не рекомендуется к использованию, но поломать “разделение” вполне может
- {include_php} – Используются для подключения PHP-скрипта в шаблон, устарела функция, советуют для сего написать свою функцию для Smarty – вот такое простое решение для верстальщика
Еще один минус Smarty – это PHP4, который после 08.08.08 даже лататься не будет…
А то что IDE не дружат со Smarty и ему подобными – это меня просто бесит (даже если вы настроите подсветку, навигации по классам и функциям Вам не видать)
Какова же альтернатива? Посмотрите на Zend_View – красивая реализация шаблонизатора с нативным PHP синтаксисом.
P.S. Оглядываясь на свой предыдущий пост о рангах разработчиков, можно сие смапить на PHP:
- Junior PHP Developer – восторженно изучает Smarty и еже с ними
- PHP Developer – везде использует Smarty, но начинает что-то подозревать
- Senior PHP Developer – пишет свой шаблонизатор, понимает в чем соль и возможно приходит к шаблонизатору аля Zend_View
- Lead Developer – не задумывается о таких мелочах
Прошу прощения – php код потерся в прошлом комментарии.
Полностью согласен и сотню раз убеждался, что лучше, быстрее, сильнее View style для php нету ничего.
На изучение для верстальщика
и
{if $var eq ‘value’}{/if}
или
=nl2br($text);?>
и
{$text|nl2br}
имхо, уйдет одинаковое количество времени.
Я уже писал об этом – http://orl.sumy.ua/blog/129.html, если интересно.
Убежден, что дело далеко не в здравом смысле. Приверженцы Смарти считают его стандартом, хорошим тоном и тд, что ему внушили “учителя”. Все описанные доводы, и даже больше, я не раз озвучивал в лицо. И ведь видно, что ответить нечего, но что-то не дает им право согласиться с тобой. Посему вывод только один – установка во всем виновата, мода и тд. Хорошо, что ZF в моду входит ZF в этом смысле:)
))ну я начинающий , и на самом деле до сих пор так и думал))
В сетке нашел только одну статью(mvc для начинающих), где пошагово и более менее понятно рассказывается как разделить логику от представления.. если напишете чтото такое, уверен многие джуниоры будут вам благодарны)
зы: новый читатель вашего блога
А зачем он, этот Smarty, вообще нужен. Ведь PHP и сам по себе прекрасный шаблонизатор
а мне всегда казалось, что смартифилов последнее время все меньше и меньше…
Вроде шаблонные холивары становятся делами давно минувших дней..
@deadmen:
Да вот как-то опять активизировались…
для мелких сайтов (проектов) нет смысла в использовании шаблонизаторов
2 Lexun
а вот и наоборот :) для мелких сайтов, они НЕ ДОБАВЛЯЮТ ощутимых проблем, при этом вполне выполняя своё предназначение – облегчая жисть програмисту.
а вот для сложных, нагруженных сайтов уже бывают варианты когда их НЕЛЬЗЯ использовать…
Что могу сказать по этому поводу, без смарти никуда, любой проект сложностью выше средней и полностью ООП php кодом реализовать без смарти сложно! лишние движения…
смарти незаменим в структуре шаблонклассы
смарти помогает поладить программеру с дизайнером!
учите мат часть, разбирайтесь в глубинных проблемах и смыслах и тогда вы поймете как правильно юзать смарти!
@elenberg:
Я прекрасно разбираюсь в Smarty и именно по этой причине не вижу необходимости в оном.
Я ЗА шаблонизаторы в PHP – т.к. сие есть ТРУ – но не смарти; шаблонизаторы с нативным синтаксисом иль даже XSLT – это правильно, вот к чему я клоню…
Дизайнерам он не помогает – для них что Smarty, что PHP в чистом виде достатончо прозрачны.
Smarty – он просто удобен.
Если умеешь правильно разделять по MVC, то щаблон прекрасно читается и сводится к {$var} или максимум к {$var->value}{$var.value}.
Но холивара точно не стоит. Дело вкуса. Со смарти, например, удобно, когда в html-е на месте значений не пустышки, а теги смарти. Как минимум визуально видишь цвет, размер, расположение и т.п… – так верстать проще, чем с пустыми местами. Но, повторюсь – исключительно дело вкуса и степени кривизны рук, применяющих шаблоны.
Неплохая реализация “шаблонизатора” в, кажется, XMBforum.
Smarty давно уж затёрся в скриптах моей CMF, так уж получилось. Не было времени его выдрать и заделать полученное пространство своим решением, хотя цель стоит такая в ближайшем будущем. Решил всё делать сам: кеширование и мелочи шаблонизаторства(в шаблонах нет ничего программерского, только переменные) лучше написать вручную, под себя.
Вся прелесть смарти не в простом {$var}
а в плагинах и модификаторах
@bibendi:
Ну и в чем прелесть – плагинов и модификаторов? – по большому счету они лишь враперы для PHP функций, да и Helper’ы в Zend_View более гибкие…
выйдет Smarty 3 вот он вам покажет фурор. Я всегда был и остаюсь при смарти
Я многое перепробовал – и общепринятый смарти на newsisfree.com, и старый глупый tplLib на afternic.com (который тоже когда-то был открытием) и даже такие наркотики, которые вам и не снились, и вы их ни скачать, ни купить не сможете (закрытые дорогостоящие разработки) – на icms.ch. Дык знаете шо я вам таки скажу? Чистый php тоже имеет весьма-весьма веское право на жисть.
Я никого (пере)убеждать не хочу, но вот просто так пару ссылок – http://www.bigsmoke.us/php-templates/smarter-sans-smarty – тут кто-то не поленился, и сравнил кусочки шаблонов на смарти и на чистом php по-детски просто – в две колоночки. Весьма забавно должен сказать. Ну а тут не поленился я (пардон что на инглише) – http://gerr.info/templating/ – это тем кто любит плугины и хелперы + продвинутые техники типа врапинга. Приятного вам вечера, господа.
Сначала присматривался к Смарти, однако ничего сверхъестественного в ней не увидел. В добавок не нашел ответа на вопрос “зачем эмулировать php”.
Сейчас живу на Zend_View и всем доволен.
Посмотрел на Zend_View – не понравилось… А Smarty по мне самый гут. Дело вкуса и предпочений.
Цит.: “А то что IDE не дружат со Smarty и ему подобными – это меня просто бесит (даже если вы настроите подсветку, навигации по классам и функциям Вам не видать)” – дружище, тогда ставь phpDesigner, ИМХО, это самая крутая IDE`шка для работы с php. Сам пользуюсь только ей. И Smarty подсвечивает прекрасно, и теги его знает. Автор phpDesigner`а реально жжот, и обитает здесь -> http://www.mpsoftware.dk/phpdesigner.php
Я уже очень много IDE перепробывал, но ни одна не позволяет нормально работать со Smarty, нет в них “навигации по классам и функциям”, и phpDesigner не исключение, и ИМХО до самой крутой данная IDE очень сильно не дотягивает…
Оки :) Какую IDE`шку предложишь испытать :)
На линуксе даже не знаю что испльзовать как средство разработки, какую бы IDE. Приходится через kate, но это просто txt`редактор..
Netbeans, Eclipse, Zend Studio ?
На линуксе использовал Komodo IDE. Очень ей доволен. Есть так же ее бесплатная облегченная версия – Komodo Edit
Не юзаю шаблонизаторы и вполне доволен жизнью =)
Живу в Ubuntu.
В качестве редактора кода – geany – имхо приятнее kate.
Для дэбага – zend for eclipse (регится кейгеном запущенным из-под вайна) и Zend Platform – бесплатная для не-продакшн серверов.
Geany подсвечивает код, zend дэбажит, автодополнением не пользуюсь – знаю код на память или знаю, куда посмотреть.