?

Log in

No account? Create an account
Main

Про шаблоны, которые View

Вот ведь интересно как постановка задачи меняет одни предпочтения на прямо противоположные.

Если вы создаете веб-приложение небольшой командой, то простота поддержки имеет наивысший приоритет. И шаблоны для View слоя из MVC крайне удобны на чистом php с хелперами (небольшими функциями или методами, чтобы выпадающий список у формы не рисовать, ссылки удобно ставить и т.д.).

Когда-то я был очарован XML, и сделал все на XML. Была идея пользоваться xslt, как стандартом и то, что в шаблоне никакого кода. Было все ужасно громоздко. И XML Был часто неудобен своим желанием валидности, и хелпер в xslt подиж ты запихни. Как только я с него слез, я понял, что это хорошо. Настолько стало легче. Да конечно надо себя ограничивать — не превращать шаблон в котроллер или, того хуже, в модель. Да этого желания и не возникает вообще-то, если ты понимаешь, что ты правишь шаблон.

Сегодня читаю как slonik_v_domene в ru_php жжет глаголом:

Лучший шаблонизатор - сам php?
Вон из профессии!!!


И ведь у него своя правда — если верстальщик шаблонов не сидит на растоянии вытянутой руки от тебя, то дать возможность в шаблоне писать код, должно быть плохо и опасно. Мало ли чего нанятый на сезонную работу верстальщик тебе в шаблон напихает. Хотя наверное должно быть видно, что в шаблон напихали, не так ли?

Comments

> Мало ли чего нанятый на сезонную работу верстальщик тебе в шаблон напихает.

Это повод не пользоваться сезонным верстальщиком, но никак не php в качестве шаблонизатора. ;)

И повод подумать, как изолировать тот php, который в шаблоне от того php, который в движке.
да как же его дешевым образом заизолируешь? вон из html вычищать XSS та еще задача, а тут и подавно.

т.е. есть ограничение -- если у тебя паблик сервис типа ЖЖ и ты хочешь дать возможность менять макет -- никакого там php быть не может.

однако в подавляющем большинстве задачек этого ограничения нет.
> Лучший шаблонизатор - сам php?
> Вон из профессии!!!

Не умеешь внятно разъяснить свою точку зрения? Столкнувшись с непониманием сразу переходишь на крик? Вон из профессии. ;)
ну вообще да. формулировочка та еще.
и не просто с непониманием, а с несогласием с его, слоника, мнением.
Ну, я уже привык к XML/XSL. Правда очень часто склоняюсь к мысли, что генерирую XML для XSL, а не наоборот. Но, наверное, так и должно быть. :)
ну привыкнуть ко всему можно. но очень часто xml влечет за собой лишнюю заботу о самом xml.

В Симфони 1 использовался ORM Propel. У которого конфиги в xml. Когда сделали мостик, чтобы конфиги можно было писать на YAML, удобство пользования резко возросло.

а теоретически мне очень понравился xml-xslt... я даже книжку создателя XSLT прочитал в оригинале. А вот на практике как-то ну никак... все боком... всегда есть что-то более легковесное.
Собственно, проблемы xml/xslt сродни анекдоту про то, что американцы и русские победили во второй мировой японцев и немцев не в последнюю очередь благодаря средней длинне команды в бою. ;)
слон резок конечно, но в данном случае он скорее прав чем нет. есть вещи поудобнее пыха в плане синтаксиса и надёжнее в плане отсутствия доступа к глобальным переменным и системным функциям.
имя, сестра, имя!

все очень зависит от контекста. ну что там по-удобнее, смарти или xml? Если у тебя приложение внутри нормальное такое MVC, то ничего особенного в шаблонах не надо, ну что там такое может быть, чтобы php не справился? А дополнительный слой рано или поздно приведет к решению надуманных проблем, а как бы нам на этом шаблонизаторе эдакую проверку или цикл учинить?

надежность? это скорее безопасность от недобросовестного использования. Не будешь ведь ты себе в ногу стрелять? Да и какие в наш век вообще глобальные переменные? Если они вообще есть, то это проблема уж точно не в шаблоне.

Единственный повод не использовать php, это когда шаблоны правятся пользователями публичного сервиса. Все. В остальных случаях недостатков не вижу.
а меня напрягает например это извечное < ?php echo htmlspecialchars($title) ?>. перевёл двиг на смарти - доволен: {$title|escape}

или условие. вместо
< ?php if ($a > $b) { ?>
asdf
< ?php } else { ?>
fasd
< ?php } ?>

использую
{if $a > $b}asdf{else}fasd{/if}

писать меньше, в общем.
Я очень, очень доволен HAML-ем и все последние проекты делал на нём. Верстальщику надо приблизительно часа три что бы разобраться.
Слоника в домене крайне, крайне неприятно читать и слышать. Его выссказывания редкостно снобистские и подчас воинственно дилетантские.

(Anonymous)

Слоник, конечно, сноб и вообще известная сволочь. Но что не отнять - у него огромный опыт успешного построения больших и сложных систем. В отличие от 90% дилетантов из ru_php.
К сожалению, я имел возможность убеждаться в том, что он разбирается не во всех вещах, которые утверждает, поэтому, учитывая, что я лично его не знаю, мне было бы очень сложно понять, в каких вопросах стоит его слушать, а в каких нет.