waldicom
2.05.2017 - 16:54
Не устану повторять для Николая - наследование темплейтов рулёз!
_____________
Свои мозги еще никто не отменял.
Телепатов нету.
AllesKlar
Цитата |
Что не так с htmlspecialchars |
Это уже другой холивар
Я не тащу в базу мусор, вычищаю и привожу контент к нужному виду, потом всю эту красоту пишу в базу, вместо того что бы писать всё подряд, а потом каждый раз очищать и приводить к нужному виду. Верстальщикам в большинстве случаев приходит уже с htmlspecialchars, приходит именно то, что подразумевалось сохранить, а XSS в базу сохранять не подразумевалось.
Цитата |
Верстальщик. Он, как правило и дизайнер. |
А точно, в идее. Просто привык что дизайнеры только рисуют, а верстальщики и фронтом на js занимаются.
Цитата |
А если в 8.0 запретят часть php фишек, перепиливать шаблоны? |
А если электричество отключат?
Там по мимо шаблонов нужно будет перепиливать всю систему и сам php пересобирать с другими модулями.
Цитата |
Да, php дает нам возможность определить переменную в одном скрипте, а использовать ее в другом. Вы все еще так делаете? Тогда мы идем к вам |
Ну я же не говорил что нужно совсем без шаблонизатора. Я про синтаксис говорил, взяли один, поменяли на другой почти точь в точь такой же.
Цитата |
Опиши структуру по-сложнее, и твой шаблон превратится в кашу из <?php if() else <?php foreach и т.д. |
В смарте тоже самое.
Цитата |
напиши свой шаблонизатор, мне ни разу не пришлось использовать более 10-20 процентов от мощности Smarty, так что написать свой парсер/рендер - дело одного дня. |
Я выше писал, что уже писал шаблонизатор со смарти синтаксисом с парсером и шлюхами, только в итоге отказался в пользу нативного синтаксиса.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
waldicom
Наследование можно и на нативе делать, тут уже было в каком то холиваре.
Другое дело что оно нигде не пригождяется.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Цитата (waldicom @ 2.05.2017 - 12:54) |
Не устану повторять для Николая - наследование темплейтов рулёз! |
Я тоже думал, что рулез. Иначе ничего полезного в этих монстрах нету. Однако я так думал до тех пор, пока не столкнулся с этим "наследованием" поближе.
Тут прав Ron, изучать технологии нужно. Обязательно. Именно для того, чтобы понять, на сколько они полезны, а важнее - бесполезны. Иначе все голословно. Так вот, наследование вещь конечно полезная, но тащить ради неё столько всего лишнего... Тем паче, что опять же прав AllesKlar
Цитата |
мне ни разу не пришлось использовать более 10-20 процентов от мощности Smarty, так что написать свой парсер/рендер - дело одного дня. |
Я года три-четыре назад разбирался с этим вопросом, сделал свой шаблонизатор с блэкджеком и куртизанками. С наследованием. И вот что интересно. Наследование, которое так часто приводится чуть ли не маной небесной, используется не так уж часто. И если есть такая необходимость, вполне спокойно реализуется несколькими строчками кода.
Что касается других "полезностей", то это всё притянуто за уши. Сто раз пережевывалось в холиварах, не хочется повторяться.
Вобщем то все просто. Шаблонизатор нужно перерасти. Понять его бестолковость. И, кстати говоря, это происходит с подавляющим большинством программистов. Ну если конечно есть возможность развиваться. Это косвенно показывает
Цитата (Ron @ 2.05.2017 - 10:44) |
тридцать миллионов инсталляций только через composer. |
и редкость применения в боевых проектах.
Ну да, если ты работаешь в конторе, где шаблонизатор априори, то да, к нему можно привыкнуть. И он даже станет казаться удобным, как седло корове, на которую его водрузили с детства.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Invis1ble
2.05.2017 - 18:31
Цитата (twin @ 2.05.2017 - 18:06) |
используется не так уж часто |
По моей статистике - достаточно часто. Примерно в 100% случаев. И еще приправлено миксинами по вкусу.
Пойду переписывать все свои шаблоны, а то twin сказал, что наследование - нинужна.
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
waldicom
2.05.2017 - 18:40
Цитата (twin @ 2.05.2017 - 15:06) |
С наследованием. И вот что интересно. Наследование, которое так часто приводится чуть ли не маной небесной, используется не так уж часто. |
Зависит от того, какой продукт ты делаешь/используешь. Если у тебя какой-то местечковый продукт, который используется только у тебя - то ок. Если твой продукт используется "во всем мире", то надо дать людям возможность изменять внешний вид и/или поведение темплейтов.
И опять же, если ты не понимаешь или не используешь этой фичи, то это не значит, что она отстой и никому нафих не нужна.
_____________
Свои мозги еще никто не отменял.
Телепатов нету.
Я удивляюсь, что до сих пор ни кто не вспомнил про кэширование. Раньше об этом упоминалось прямо в первых строках холивара.
Сейчас наверное дошло, что кэширование шаблонов, это не плюс, а попытка исправить минус шаблонизатора. Перефразируя знаменитый мем:
Цитата |
шаблонизатор, это удобный инструмент, позволяющий решить проблемы, которых до изобретения шаблонизатора не существовало. |
Вся беда таких шаблонизаторов описывается двумя словами: горе от ума. Благими намерениями выстлана дорога в адъ. Начинали помаленьку, решали действительно насущные проблемки, потом пошло-поехало. Возможности, плагины, целые фреймворки уже на них пишут. Жуть.
Примерно тоже самое и с наследованием.
Нет, я конечно допускаю, что есть такие продукты (джумла там или вордпресс к примеру), которые
Цитата (waldicom @ 2.05.2017 - 14:40) |
используется "во всем мире" |
И что там обязательно нужен шаблонизатор, ибо вдруг найдется тот, кто не сумеет разобрать код наследования без него. Это примерно как призывать всех ездить на метро, потому что не у всех же есть права.
Я так же допускаю, что есть люди, у которых наследования шаблонов используются
Цитата (Invis1ble @ 2.05.2017 - 14:31) |
Примерно в 100% случаев |
Глупо это отрицать.
Вопрос то собственно не в этом. А в том, что из-за наследования тащить всю Смартю (ну ладно, пусть Твиг), это как то мягко скажем... неэфективно.
А по сути разобраться, ведь если применять этот механизм нормально, все равно будет нужна прослойка между темплейтом и шаблонизатором. И чем это выгоднее своего механизма наследования, который будет заниматься только этим, раз так это важно? Не таская все остальное, зачастую совершенно не нужное, а порой просто вредное? Да и в (php!!!) коде все равно придется разбираться, как там что отнаследовалось. Ну а про суррогат и говорить не приходится.
Вот ТС разобраться не может, на форуме вопросы задает. И это явно не последний вопрос. Ускорение разработки, чего уж там.
Цитата (waldicom @ 2.05.2017 - 14:40) |
И опять же, если ты не понимаешь или не используешь этой фичи, то это не значит, что она отстой и никому нафих не нужна. |
Я как раз понимаю.
И использую. Не в 100% случаев естественно, но иногда полезно. Но я так же понимаю, что наследование темплейтов !== смарти.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
AllesKlar
2.05.2017 - 21:44
Цитата (Arh @ 2.05.2017 - 15:55) |
Я не тащу в базу мусор, вычищаю и привожу контент к нужному виду, потом всю эту красоту пишу в базу |
А поиск по базе?
Тыж оригинальный контент
похерил уничтожил, у тебя поиск нерелевантный более.
_____________
[продано копирайтерам]
Цитата (Arh @ 2.05.2017 - 16:16) |
Ты уже не первый раз отвечаешь в таком духе. Как будто что то впариваешь мне laugh.gif |
А что тебе еще ответить? Ты мне не родственник, не друг и не сослуживец. Как еще политкорректно сказать, что абсолютно с тобой не согласен?
Могу еще одну свою любимую фразочку: настойчиво учить никого не собираюсь, это денег стоит, причем хороших.
Если ты понимаешь технологию или не понимаешь, поверь, миру фиолетово. =)
Цитата (twin @ 2.05.2017 - 15:21) |
Но застрелите меня семь раз, так и не понял их сакраментального смысла. И до сих пор не представляю, какие именно задачи они решают... |
Наверное каждый видит для себя свои плюсы. Для меня один из главных как раз наследование. И еще дофига вкусовщины, нет смысла говорить. Даже несмотря на то, что обсуждаемые шаблонизаторы тяжеловаты, городить свой огород совершенно не хочется.
Цитата (Arh @ 2.05.2017 - 17:57) |
Другое дело что оно нигде не пригождяется.
|
А-ха-хаааа, вот это эпик, браво!
Цитата (twin @ 2.05.2017 - 18:06) |
Вобщем то все просто. Шаблонизатор нужно перерасти. |
Как и ООП?
Кстати, некоторые считают PHP нужно перерасти.
Цитата (Ron @ 2.05.2017 - 18:42) |
Наверное каждый видит для себя свои плюсы. |
Разумеется. Но я не столько про минусы говорил, сколько про целесообразность.
Цитата (Ron @ 2.05.2017 - 18:42) |
городить свой огород совершенно не хочется |
Тоже верно. Каждый решает для себя сам. Кому то кажется, что в гору только дураки ходят.
А кто-то без ледоруба себе жизни не представляет.
Цитата (Ron @ 2.05.2017 - 18:42) |
Как и ООП? |
Факт. По крайней мере есть куда расти. Как и с PHP кстати. Ты же сам недавно говорил
Цитата (Ron @ 2.05.2017 - 10:44) |
Лучше всего еще и другими языками активно интересоваться |
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
AllesKlar
Цитата |
А поиск по базе? ohmy.gif Тыж оригинальный контент похерил уничтожил, у тебя поиск нерелевантный более. |
Почему похерил, контент в базу попал запланированный. Или ты ищешь html разметку в базе? Ну тогда сделай htmlspecialchars своих запросов.
А в твоём случае нужно при каждом выводе делать htmlspecialchars.
А потом ты решишь поменять фильтр, что бы что то пропускать или наоборот резать и все старые статьи "поедут".
А ещё забудешь применять этот фильтр при выгрузке куданить в яндекс или в api и опять всё поедет.
А потом верстальщик забудет в шаблоне применить htmlspecialchars и будет XSS. Ты решишь это как то исправить и решишь написать костыль, который всегда делает htmlspecialchars, так у тебя появится твиг, ну в общем по кривой дорожке)
Ron
Цитата |
Если ты понимаешь технологию или не понимаешь, поверь, миру фиолетово. =) |
Как бы так объяснить то даже не знаю. Мне от мира то и не надо ничего, а ты считаешь что надо и что я прошу тебя меня обучать. Абсурд, как бы моя точка зрения намекает что я такое учение не поддерживаю, зачем мне лжеучение?
Ну то есть я не хочу как то тебя оскорбить или настаивать кто прав а кто нет. Просто ты либо не правильно понимаешь ситуации когда люди спорят, либо пытаешься как то задеть либо эго какое то завышенное.
Потому что когда люди высказывают свои мнения, это их мнения.
Цитата |
- Я считаю так - А я вот так |
И всё.
А у тебя получается:
Цитата |
- Я считаю так - А я вот так - Ну я не собираюсь тебя учить, твоя жизнь, твоя голова |
Ещё не хватает добавить "ну и дурак" как в детском саде. Как будто ты это сама истинна и за одно твоё внимание люди должны платить. Хотя тебя даже не звал никто.
В общем без обид, объяснил как мог)
Цитата |
Как еще политкорректно сказать, что абсолютно с тобой не согласен? |
Просто сказать что не согласен и не приплетать сюда мир, не говорить за всех, не принижать и не махать писькой.
Цитата |
А-ха-хаааа, вот это эпик, браво! |
Ну чё за язвительность опять?
Твин уже подметил выше что кому то в 100% случаях пригождается, кому то никогда. Мне никогда, если ты считаешь что я так акуенен, да браво мне)
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
AllesKlar
3.05.2017 - 17:53
Arh
Цитата |
Почему похерил, контент в базу попал запланированный. Или ты ищешь html разметку в базе? Ну тогда сделай htmlspecialchars своих запросов.
|
Да, я ищу слово <script> в базе, что такого? Статья по яваскрипту, например.
Цитата |
А в твоём случае нужно при каждом выводе делать htmlspecialchars. |
Именно. Это прописная истина.
Цитата |
А потом ты решишь поменять фильтр, что бы что то пропускать или наоборот резать и все старые статьи "поедут".
|
Нет никаких фильтров. Есть статья из "программирование курс 1 семестр 1 лекция 1", которая гласит
Цитата |
Все данные в базе хранятся в чистом виде. При выводе данные должны быть в безопасном виде. |
Цитата |
А ещё забудешь применять этот фильтр при выгрузке куданить в яндекс или в api и опять всё поедет.
|
Нет фильтров, api выдает данные в чистом виде.
Цитата |
А потом верстальщик забудет в шаблоне применить htmlspecialchars и будет XSS.
|
Верстальщик об этом не думает и не должен думать. Он получает данные, безопасные для вывода.
Цитата |
Ты решишь это как то исправить и решишь написать костыль, который всегда делает htmlspecialchars, так у тебя появится твиг, ну в общем по кривой дорожке) |
Нет никаких костылей, потому что этого никогда не произойдет. Т.к. есть парадигма:
- Данные при вставке в базу вставляются в чистом виде.
- Данные при выводе подготавливаются для безопасного вывода.
Всё. Два пункта. Два метода на весь проект, какой бы он большой ни был.
В твоем же случае при любом обращении к базе нужно не забывать, что данные в базе измененные.
В каждом из 100500 методов, ты не имеешь права об этом забывать.
Каждый вновь прибывший сотрудник, который сопровождает твой код, должен об этом не забывать.
А еще есть такая вещь, как просто поиск по базе.
Да, так делают. Открываем клиент, подключаемся к базе и вперед. Типичная ситуация при дебаге, типичная ситуация для суппорта.
Клиент говорит: поиск работает криво, ищу текст
* ....текст с кучей тегов.... *
Твой суппорт повесится от такого счастья, переводя угадывая, что же должно быть в базе.
Твоя позиция такова лишь потому, что так тебе удобно, и ты никогда не был в команде, которая поддерживает реальный продукт.
(Ничего личного, просто опыт)
_____________
[продано копирайтерам]
AllesKlar
Цитата |
Твоя позиция такова лишь потому, что так тебе удобно |
Факт, мне так удобно, тебе по другому.
Цитата |
и ты никогда не был в команде, которая поддерживает реальный продукт. |
А как я по твоему деньги зарабатываю, проституцией?)
Цитата |
(Ничего личного, просто опыт) |
Я работал с проектами где htmlspecialchars до и где после. Почти во всех проектах кстати для поиска вырезается всё кроме букв, ну и цифр там с пробелом, никто не ищет html, разве что на тематических сайтах, посвящённых html, но в таком случае просто добавляешь htmlspecialchars , благо поиск через 1 интерфейс работает, а не как у тебя через 100500 копипастов как ты говоришь. Один раз добавил и не нужно это в голове держать.
Сказал же что это холивар) любите вы.
Цитата |
Есть статья из "программирование курс 1 семестр 1 лекция 1", которая гласит |
Я к сожалению такой не читал, приходилось думать самому, да и приятно самому подумать.
Работал и с тем и стем, размышлял что предпочтительней, пробовал, тестировал, смотрел как это работает на продакшене, не всплывут ли нюансы через время. Не всплыли. Может потом всплывут и я поменяю свои предпочтения. Но сейчас твоя "прописная истина" кажется бредом, делать что то много раз, вместо того что бы делать 1 раз.
Сейчас кстати основной проект по твоей схеме. Приходиться постоянно помнить что данные сырые, что их каждый раз нужно отфильтровать, преобразовать, подкрутить, подвертеть.
Выгрузка в яндекс - крутим вертим, экспорт в блок - крутим вертим, ифрейм для ембединга - крутим вертим и тд и тп ещё 100500 раз =)
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
AllesKlar
3.05.2017 - 19:08
Arh
Если ты пишешь в базу измененные данные, то ты нарушаешь целостность данных.
Твой подход заточен только лишь под один конкретный случай: веб-морда на php, все сервисы на php
Как быть, если система распределенная, но с единой базой?
- api на яве.
- вебморда на php
- десктопный клиент на шарпе
- внутренние сервисы на С++
- CDN на lua
Как ты объяснишь человеку, который считает php 1С исчадьем ада, что это за такие странные символы в базе '<' '>' и что ему с этим делать?
Реализация не должна зависить от данных.
Выбор ЯП не должен зависить от данных.
Ты же ставишь жесткие ограничения: либо php, либо "извините, Вы нам не подходите"
_____________
[продано копирайтерам]
AllesKlar
Цитата |
Твой подход заточен только лишь под один конкретный случай |
Не, под большинство случаев, а ты приводишь в пример частности.
Цитата |
что это за такие странные символы в базе '<' '>' |
Это html сущности, они не имеют отношения к яве, php или lua.
Цитата |
Как быть, если система распределенная, но с единой базой? |
А как быть с неочищенными данными?
На яве же не будешь выводить пользователю мусор, всё равно чистить.
Всё равно что то где то делать.
Я больше скажу, я данные даже в сжатом виде храню кое где, что бы вместиться в ограничение оперативки, сжимаю на стороне php, а потом на Lua их разжимаю, поиск по пи ним не работает, по твоей логике это неправильно.
Цитата |
Реализация не должна зависить от данных. |
Так у тебя зависит. В данных бардак, что бы вывести это, нужно убрать бардак - реализация зависит от данных.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:
Powered by dgreen