За последние 24 часа нас посетили 19174 программиста и 1643 робота. Сейчас ищут 888 программистов ...

Выбор шаблонизатора

Тема в разделе "PHP для новичков", создана пользователем Quebec, 7 июн 2014.

  1. Quebec

    Quebec Новичок

    С нами с:
    22 май 2014
    Сообщения:
    22
    Симпатии:
    0
    Подскажите, какой шаблонизатор более актуальный в данное время Twig или Smarty? Слышал что Smarty уже не торт. Это так? Какие преимущества у Twig?
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    PHP - охрененный шаблонизатор. Собственно, для того и был написан в свое время.
     
  3. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Наследование шаблонов в пару строк?
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Уже обсуждалось - просто надо уметь готовить.
     
  5. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Раньше я правил Smarty, убирал косяки, чтобы пользоваться самому. Ибо писали его очень криво. Потом код улучшился. Видимо всвязи с популярностью пришли новые кодеры. Но вот осадок остался.
     
  6. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    А в чем прикол этих шаблонизаторов? и где они используются? а точнее в каких случаях.
     
  7. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Зачем что-то готовить, когда можно
    Код (Text):
    1.  
    2. {% extends "base.html" %}
    3. {% block head %}
    4. ...
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    И оно за собой тянет хрен знает сколько говна лишнего. Я не готов платить столько за довольно спорную блажь, без которой можно жить, не зная горя и проблем. У меня чисто система, к примеру, весит 120кб. Без обвеса. В то время как чисто смарти весит метр с лишним. Нет уж, спасибо.
     
  9. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Бери твиг. Можешь писать на чистом пхп, вообще в пхп бардак.
     
  10. Quebec

    Quebec Новичок

    С нами с:
    22 май 2014
    Сообщения:
    22
    Симпатии:
    0
    Чтобы отделять код от разметки. MVC
     
  11. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Отделять код от разметки можно и без шаблонизатора а-ля смарти. По мне большой разницы нету между
    Код (Text):
    1. Hello, {$name}
    и

    Код (Text):
    1. Hello, <?php echo $name; ?>
    Первое всё равно превратится во второе, зато для второго не нужно дополнительный модуль устанавливать, и тратить время на компиляцию шаблона в php
     
  12. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Компиляция происходит только один раз, дальше все берется из кэша. Шаблонизаторы - это из той же оперы, что и фреймворки. Можно городить свои велосипеды аргументируя это тем что "оно экономит 100кб и 2 миллисекунды", а можно взять нормальный пакет и писать логику приложения вместе очередной подпорки для своего костыля.
     
  13. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Тема реально провоцирующая на флейм. Никто никого слушать не будет ))) И тем не менее наброшу от себя:

    из реального проекта. перекрытие шаблонов возможно и в "нативных" шаблонах.
    Код (PHP):
    1. <?php
    2. $this->extend('main');
    3. ?>
    4. <?php $this->beginBlock('menu'); ?>
    Реализация перекрытия шаблонов умешается на одном экране без скроллинга: буфферизация, стек имен шаблонов, инклуд имени из стека.

    Кстати, не факт. Зависит от конфигурации. Возможна и такая конфигурация, когда твиг будет игнорировать изменившиеся шаблоны.

    Короче, он не только упрощает, но и усложняет ))) А отладка это вообще отдельная боль.

    У твига есть ровно одно достоинство: синтаксис его языка похож на синтаксис django templates. Кому хочется такой синтаксис, тот использует твиг.
     
  14. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Ну дык на продакшн включаешь кэш, у себя - не включаешь. На счет боли - ты просто Blade не видел, вот там да, головняк )

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

    Для себя я сделал вывод, что если сообщество использует что-то, дорабатывает и улучшает, то лучше присоединиться и не тратить свое время на бесполезные вещи. Ну а чисто в академических целях я вот к примеру тыкаю руби с его фреймворками, больше пользы )
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в пхп наследовать можно и в одну строку. Инклуд и готово.
     
  16. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    это верно — в Тулу со своим самоваром не ходят. а если мы в небольшой команде трудимся над закрытым проектом, мы сами решаем что полезно.

    в любом случае, классы должны быть слабо связаны и замена шаблонизатора не должна стать проблемой.
     
  17. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    У шаблонизатора есть важное преимущество - автоэскейпинг. Для контуженных - отключаемое по конкретной переменной, конечно.
    Защищает от массы XSS авторства различных самонадеянных программистов.
     
  18. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    По моему нескромному мнению, это преимущество из разряда маркетинга. Примерно как тезис о невьебенной скорости скомпилированных шаблонов. На поверку оказывается не очень удобно.

    Страница это не SQL-запрос. Тут далеко не всё надо экранировать. Вот на этой странице надо экранировать два поля: имя пользователя и заголовок темы. Если экранировать текст на выходе из bbcode parser, то форум превратится в говно. Остальные 100500 полей экранировать безопасно, но и бессмысленно, только процессорное время жрать зазря. И вот, у нас автоматический эскейпинг всего-всего. Но после первой неудачи мы понимаем, что большую часть значений надо отметить как исключение. Помоему глупо.

    Есть еще "достоинство" от фабьена: песочница. Ограниченный набор функций, которые можно употреблять в шаблоне. Такое впечатление, что мы разрешаем писать часть программы (а шаблоны это важная часть программы!) то ли идиоту, то ли диверсанту.
     
  19. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Только про процессорное время не нужно, я умоляю. Как же любят тут ахинею нести, а... вы, наверно, из тех, кто скорости if и switch сравнивает? Те, кому важно процессорное время - не пишут на PHP.

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

    Так что вы, как лучшей представитель форума пхп.ру, можете отрицать очевидное, но тем самым лишь свою квалификацию показываете.
    Именно так.
     
  20. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    пальцем в небо. зато я могу сравнить
    Код (PHP):
    1. <?= $collector->controller ?>
    с
    Код (PHP):
    1. echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "controller"), "html", null, true); 
    функция twig_escape занимает 145 строк.
    переменная $this->env сделана для эмуляции наследования: хоть в скомпилированных шаблонах есть слово class, для перекрытия шаблонов буквально наследование не используется. "области видимости" вычисляется манипуляциями с массивами во время исполнения. короче, всё ОЧЕНЬ дорого)

    самое печальное, что эти горы ничего не гарантируют. идиот всё равно найдет где накосячить.

    спасибо за грубую лесть! я имею свое мнение, если у вас есть свое — выскажите его, пожалуйста.

    Добавлено спустя 3 минуты 38 секунд:
    на самом деле я не призываю отказываться от Twig или любого другого шаблонизатора. я только провоцирую обсуждение.
    есть разница между мнением и привычкой.
     
  21. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Я высказал. Людям свойственно забывать. Причем, вне зависимости от квалификации. По многим причинам. Один убыток из-за прошедшего XSS может стоить на несколько порядков больше, чем все сэкономленное процессорное время ваших спичек. И это нормальная ситуация, когда программисту дается комфортная среда для работы. Вот грозить штрафами и увольнениями за пропущенную дыру - не комфортно, а сделать, что бы риск появления такой дыры был минимален - комфортно.
    Сравнивайте сколько влезет. Только откуда у вас там объект? ООП - это же медленно, вы запороли проект.
     
  22. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    вы высказали чужое мнение + пачку ярлыков мне попытались приклеить. где аргументы, где доказательства?

    А поручая идиотам писать шаблоны, вы не подвергаетесь риску? )))

    Добавлено спустя 5 минут 8 секунд:
    возвращаясь к теме
    Twig. Нынешний тренд — всё, что исходит от Фабьена Потенсье. Держись его стороны всякий раз, когда есть сомнения.

    Добавлено спустя 1 минуту 22 секунды:
    То, что дядя артудиту здесь наговорил, это для размышлений, а не для выбора актуального.
     
  23. Quebec

    Quebec Новичок

    С нами с:
    22 май 2014
    Сообщения:
    22
    Симпатии:
    0
    Как все далеко ушло от простого вопроса. :)
     
  24. Quebec

    Quebec Новичок

    С нами с:
    22 май 2014
    Сообщения:
    22
    Симпатии:
    0
    Решил обойтись без шаблонизатора. В документации написано что короткие теги "<?= ?>"

    Скажите, стоит ли использовать эти теги? Чаще всего эти теги включены на хостингах, или нет?
     
  25. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    не стоит, потому что
    везде по-разному. А еще с этими тегами могут быть проблемы при работе с XML. Советую почитать документацию поshodt_tags.