[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопросы
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
killer8080
Цитата (MiksIr @ 8.01.2014 - 14:48)
Про автоматический эскейпинг всего я уже писал. Имхо, для верстальщика, которых плохо понимает всякие XSS - идеально. Да что говорить, junior-ы постоянно такие косяки лепят. Да и руками... вижу большую разницу между <?=htmlspecialchars($var, ENT_QUOTES, 'UTF-8')?> и {{ var|e }}

Верстальщик не станет лепить |e к var зачем ему это, если он нифига не знает "плохо понимает всякие XSS", да и какой он нафиг автоматический, когда его нужно ручками прописывать smile.gif

Цитата (MiksIr @ 8.01.2014 - 14:48)
Ну и блоки с наследованием, да.

кстати по поводу наследования, есть ли в смарти/твиге принудительное отключение этой фичи? Ну что то типа $smarty->disable_extending() ?
killer8080
Цитата (MiksIr @ 8.01.2014 - 19:52)
А программист, включивший в настройках автоескейпинг - станет. И все var пойдут уже с эскейпингом.

ага, и вывалится куча хтмл-я в виде текста smile.gif
Нет задумка в целом не плохая, чем то напоминает ситуацию с волшебными кавычками, то же хотели как лучше, и чем в итоге закончилось... smile.gif
linker
MiksIr
Цитата
Что в чистом PHP вообще сделать нельзя, ибо нельзя отделить вывод переменных от шаблона.

Кто вам такое сказал? Вы не в курсе, что можно поставить хендлер на вывод? (правда оно не совсем то, но всё же варианты есть, как например работа с буфером вывода)

P.S. вы уже так говорите, как-будто шаблонизатор не на PHP написан smile.gif smile.gif smile.gif я начинаю пужаться.

_____________
Gear Framework
Gear Framework на Github
linker
MiksIr
Да, тут не реально. Но давайте рассуждать логически. Есть определённый контроллер, есть определённый экшен, он собирает данные и отдаёт "шаблонизатору", какие проблемы написать:
$this->render($template, array('title' => htmlspecialchars($title)));

или какая-то религия не позволяет? О "безопасном" выводе должен думать программист или верстальщик?

_____________
Gear Framework
Gear Framework на Github
linker
MiksIr
Цитата
Но на выходе с контроллера мы по-прежнему имеем данные. Не данные, разбитые на три подмассива, ибо так нужно в шаблоне, а просто данные.

Согласен, но это делает не контроллер, а его конкретный экшен, который совершает определённую функцию, и который должен знать куда пойдёт вывод, ибо
Цитата
Ибо они могут пойти и в json.

шаблонизатор не решает будет ли это вывод html или вывод в json. На выходе шаблонизатора тоже обычные данные, которые сформированы по указанному шаблону, и этот шаблон указывает именно контроллер/экшен, а раз так, то экшен в том числе знает какие данные пойдут в шаблонизатор и для чего.

_____________
Gear Framework
Gear Framework на Github
linker
MiksIr
Цитата
Массив вы так же легко заэскейпите? wink.gif А массив объектов?

А все ли данные нуждаются в эскейпинге?
Цитата
А потом окажется, что какие-то данные хотели вывести как JS переменная в формате json

Когда хотят какие-то данные выводить в json, то этим занимается программист, а не шаблонизатор. По сути, автоэскейпинг с возможностью отмены, это программист, который в коде либо эскейпит, либо не эскейпит, потому что заранее известно, что и куда пойдёт, т.е. какой будет запрос, какой контроеллер отзовётся и какой экшен выполнится.

_____________
Gear Framework
Gear Framework на Github
linker
MiksIr
Цитата
Например, поддержка разных форматов выдачи одного запроса.

Это определяется параметром в GET или POST запросе, или контроллером или экшеном, вариантов масса. Определение формата вывода - не магия и не телепатия.
Цитата
Тут view может определятся раннее - роутером.

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

Ему приходится знать, ибо именно контроллер/экшен отдаёт данные в шаблонизатор, а чтобы он хоть как-то абстрагировался от этого, вам придётся фигачить к этому делу абстрактную прослойку, аля PDO для баз данных.

_____________
Gear Framework
Gear Framework на Github
twin
MiksIr
Цитата
Скажу конечно. Они так не делают. Особо если там есть if и циклы - данных то нет, что они будут в верстке смотреть?
Делают. Еще как. И плевать им на циклы, они делают разные варианты, если это принципиально. Я говорю о верстальщиках, о тех, кто гораздо ближе к фотошопу, чем к серверу.

У вас нет верстальщиков, вы работаете исключительно с программистами. От того вам и люб шаблонизатор. И это ваше право, увольнять своих работников или переучивать.

У нас такое не канает. Верстальщику работать с данными некогда. Ему бы макет успеть сверстать. И шаблонизатор ему ну никуда не уперся. А уж фронт-энд программисту с готовым макетом тем более. И ему нафиг не нужны все эти эскейпы, наследования и прочая муть в шаблонизаторе. Ему привычнее работать с PHP.

Верстальщик у нас гораздо ближе к дизайнеру, а хороший дизайнер не может быть программистом, как и наоборот. По крайней мере я не встречал таких. Слишком разный склад ума. Да и стоит верстальщик дешевле программиста.

Так что у каждого свой резон. И своя организация процесса. И в шаблонизаторах не собран весь сакроментальный смысл веб-разработки. Кому то это удобно, кому то с точносью до наоборот.

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.