Шаблонизаторы и PHP

В очередной раз подниму тему 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 – не задумывается о таких мелочах

27 thoughts on “Шаблонизаторы и PHP”

  1. Прошу прощения – php код потерся в прошлом комментарии.

    Полностью согласен и сотню раз убеждался, что лучше, быстрее, сильнее View style для php нету ничего.

    На изучение для верстальщика


    и
    {if $var eq ‘value’}{/if}

    или



    и
    {$text|nl2br}

    имхо, уйдет одинаковое количество времени.

    Я уже писал об этом – http://orl.sumy.ua/blog/129.html, если интересно.

  2. Убежден, что дело далеко не в здравом смысле. Приверженцы Смарти считают его стандартом, хорошим тоном и тд, что ему внушили “учителя”. Все описанные доводы, и даже больше, я не раз озвучивал в лицо. И ведь видно, что ответить нечего, но что-то не дает им право согласиться с тобой. Посему вывод только один – установка во всем виновата, мода и тд. Хорошо, что ZF в моду входит ZF в этом смысле:)

  3. а затем с пеной у рта доказывать, что это необходимо для разделения логики и отображения.

    ))ну я начинающий , и на самом деле до сих пор так и думал))
    В сетке нашел только одну статью(mvc для начинающих), где пошагово и более менее понятно рассказывается как разделить логику от представления.. если напишете чтото такое, уверен многие джуниоры будут вам благодарны)
    зы: новый читатель вашего блога

  4. А зачем он, этот Smarty, вообще нужен. Ведь PHP и сам по себе прекрасный шаблонизатор

  5. а мне всегда казалось, что смартифилов последнее время все меньше и меньше…

    Вроде шаблонные холивары становятся делами давно минувших дней..

  6. для мелких сайтов (проектов) нет смысла в использовании шаблонизаторов

  7. 2 Lexun
    а вот и наоборот :) для мелких сайтов, они НЕ ДОБАВЛЯЮТ ощутимых проблем, при этом вполне выполняя своё предназначение – облегчая жисть програмисту.

    а вот для сложных, нагруженных сайтов уже бывают варианты когда их НЕЛЬЗЯ использовать…

  8. Что могу сказать по этому поводу, без смарти никуда, любой проект сложностью выше средней и полностью ООП php кодом реализовать без смарти сложно! лишние движения…
    смарти незаменим в структуре шаблонклассы
    смарти помогает поладить программеру с дизайнером!
    учите мат часть, разбирайтесь в глубинных проблемах и смыслах и тогда вы поймете как правильно юзать смарти!

  9. @elenberg:
    Я прекрасно разбираюсь в Smarty и именно по этой причине не вижу необходимости в оном.

    Я ЗА шаблонизаторы в PHP – т.к. сие есть ТРУ – но не смарти; шаблонизаторы с нативным синтаксисом иль даже XSLT – это правильно, вот к чему я клоню…

    Дизайнерам он не помогает – для них что Smarty, что PHP в чистом виде достатончо прозрачны.

  10. Smarty – он просто удобен.
    Если умеешь правильно разделять по MVC, то щаблон прекрасно читается и сводится к {$var} или максимум к {$var->value}{$var.value}.

    Но холивара точно не стоит. Дело вкуса. Со смарти, например, удобно, когда в html-е на месте значений не пустышки, а теги смарти. Как минимум визуально видишь цвет, размер, расположение и т.п… – так верстать проще, чем с пустыми местами. Но, повторюсь – исключительно дело вкуса и степени кривизны рук, применяющих шаблоны.

  11. Неплохая реализация “шаблонизатора” в, кажется, XMBforum.

  12. Smarty давно уж затёрся в скриптах моей CMF, так уж получилось. Не было времени его выдрать и заделать полученное пространство своим решением, хотя цель стоит такая в ближайшем будущем. Решил всё делать сам: кеширование и мелочи шаблонизаторства(в шаблонах нет ничего программерского, только переменные) лучше написать вручную, под себя.

  13. Вся прелесть смарти не в простом {$var}
    а в плагинах и модификаторах

  14. @bibendi:
    Ну и в чем прелесть – плагинов и модификаторов? – по большому счету они лишь враперы для PHP функций, да и Helper’ы в Zend_View более гибкие…

  15. выйдет Smarty 3 вот он вам покажет фурор. Я всегда был и остаюсь при смарти

  16. Я многое перепробовал – и общепринятый смарти на newsisfree.com, и старый глупый tplLib на afternic.com (который тоже когда-то был открытием) и даже такие наркотики, которые вам и не снились, и вы их ни скачать, ни купить не сможете (закрытые дорогостоящие разработки) – на icms.ch. Дык знаете шо я вам таки скажу? Чистый php тоже имеет весьма-весьма веское право на жисть.
    Я никого (пере)убеждать не хочу, но вот просто так пару ссылок – http://www.bigsmoke.us/php-templates/smarter-sans-smarty – тут кто-то не поленился, и сравнил кусочки шаблонов на смарти и на чистом php по-детски просто – в две колоночки. Весьма забавно должен сказать. Ну а тут не поленился я (пардон что на инглише) – http://gerr.info/templating/ – это тем кто любит плугины и хелперы + продвинутые техники типа врапинга. Приятного вам вечера, господа.

  17. Сначала присматривался к Смарти, однако ничего сверхъестественного в ней не увидел. В добавок не нашел ответа на вопрос “зачем эмулировать php”.
    Сейчас живу на Zend_View и всем доволен.

  18. Посмотрел на Zend_View – не понравилось… А Smarty по мне самый гут. Дело вкуса и предпочений.

  19. Цит.: “А то что IDE не дружат со Smarty и ему подобными – это меня просто бесит (даже если вы настроите подсветку, навигации по классам и функциям Вам не видать)” – дружище, тогда ставь phpDesigner, ИМХО, это самая крутая IDE`шка для работы с php. Сам пользуюсь только ей. И Smarty подсвечивает прекрасно, и теги его знает. Автор phpDesigner`а реально жжот, и обитает здесь -> http://www.mpsoftware.dk/phpdesigner.php

    1. Я уже очень много IDE перепробывал, но ни одна не позволяет нормально работать со Smarty, нет в них “навигации по классам и функциям”, и phpDesigner не исключение, и ИМХО до самой крутой данная IDE очень сильно не дотягивает…

  20. Оки :) Какую IDE`шку предложишь испытать :)

  21. На линуксе даже не знаю что испльзовать как средство разработки, какую бы IDE. Приходится через kate, но это просто txt`редактор..

  22. Не юзаю шаблонизаторы и вполне доволен жизнью =)

  23. Живу в Ubuntu.
    В качестве редактора кода – geany – имхо приятнее kate.
    Для дэбага – zend for eclipse (регится кейгеном запущенным из-под вайна) и Zend Platform – бесплатная для не-продакшн серверов.

    Geany подсвечивает код, zend дэбажит, автодополнением не пользуюсь – знаю код на память или знаю, куда посмотреть.

Comments are closed.