Pull to refresh

Comments 68

Хорошему разработчику/коллеге требуется инвайт на наш любимый хабр.
Почему бы ему не написать статью. Вы запостите. Если окажется удачной получите инвайт автоматический.
даже так? я не знал, предложу! да чего там, он наверняка это и сам увидит! спасибо за решение!
лучше выкинуть смарти на помойку и заюзать любой блочный шаблонизатор с поддержкой перегрузки блоков. дышать станет проще — я гарантирую это!
сколько людей столько и мнений. я вот, например, с вами не согласен
Толковая статья. Все по делу и минимум воды.
Smarty очень толковый и полезный инструмент.
Автору большое человеческое спасибо за статью.
На данную проблему наталкивается довольно много народу.
на здаровье! хоть кому-то пришлось к месту, приятно.
Данным шаблонизатором пользуюсь очень давно. Перед этим перепробовал немало других.
А со стороны некоторых личностей, ругань и плевки в тот или иной шаблонизатор были есть и будут.
Такая натура людей, тяга что-то ругать либо восхвалять.
Желательно не терять голову и искать золотую середину.
Идеального ничего не бывает.
По поводу проблемы с title и прочим — посмотрите про наследование блоков в django. После этого вам пользоваться смарти, скорее всего не захочется. там все это сделано без извратов, так как ваше решение — изврат, да еще и засовывание целой страницы в переменную, мне не очень нравится.

Еще в смарти нет вставки шаблонов с передачей параметров, вроде вызова функции, мне не хватает.

В общем, в наше время ООП и всеобщего MVC, смарти устарел, убог и неинтересн(( Давно пора уже что-нибудь получше придумать.
UFO just landed and posted this here
Это вы сам двоечник, чему-то меня учить собрались! Покурите указанную вами ссылку еще раз, и убедитесь — что там нет того, что я писал, ни параметров, ни подобия фукнции, определенной внутри шаблона (хотя. конечно, может я неясно выразился, но мне нужна не пхп-функция, а смарти-функция, и не в отдельном файле, а в шаблоне)

А смарти — перегруженный мусором, и наследования нормального там все таки нет. Извраты на ПХП с имитацией наследования не считаются.
UFO just landed and posted this here
нет есть такое понятие как функция шаблона служит например чтоб решать задачи вывода. я пользую довольно редко
а что такое программирование? вот в смарти активно юзают ветвления и циклы — это ли не программирование?

впрочем, любой «смарти-шаблон» — это функция от «параметров шаблона» генерирующая некоторую строку. любой «xslt-шаблон» — это функция от «xml-дерева», генерирующая другое «xml-дерево»
UFO just landed and posted this here
Здесь (в моем примере) функция используется именно в смысле «подшаблон», то есть она содержит только логику представления, вроде шаблона в википедии. И, кстати, иногда, простейшие математические вычисления в шаблоне еще как нужны, например при выводе объектов в несколько колонок.

UFO just landed and posted this here
они нужны во view, но не в template.
шаблону не нужно знать о том, сколько должно быть колонок — его задача, указать, как должна выглядеть таблица, как строка и как ячейка. тогда не придётся для каждого view писать свой шаблон со своим «количеством ячеек в строке» и абсолютно идентичным всем остальным.
Буэээ… еще и view отдельно писать… нет уж, мне бы все сразу)
если хотите, посмотрите квики и функции там есть и блочный синтаксис если припрет и мусора нет
Спасибо, поглядим, интересная вроде вещь, хотя вот совместимость со смарти зря они поддерживают, лишний код получается.
не они, а он, и не зря а очень даже круто. Учитывая что там одна регуляра разбирает все то ничего страшного =)
В общем, в наше время ООП и всеобщего MVC, смарти устарел, убог и неинтересн(( Давно пора уже что-нибудь получше придумать.


во первых это ваше личное мнение, не стоит так категорчно заявлять.
во вторых смарти достаточно популярен
в третьих что-то получше уже есть <a href=«quicky.keeperweb.com/ru/» quiky
про квики вот думаю стоит ли что написать?
да как, впрочем, и сам пых-пых, не смотря на свою ублюдочность, бешенно популярен.
UFO just landed and posted this here
Не согласен на счет скорости и не использования в больших проектах.
Я использую (черт, опять скажут реклама...) так вот я использую «переработанный смарти» в плане скорости и прочего.
Использую его в двух, как я считаю, достаточно крупных проектах — мне нравится и все устраивает.

UFO just landed and posted this here
UFO just landed and posted this here
как мне кажется не только от смарти зависит скорость генерации страниц.
много каких еще факторов есть: использование кешированны/не кешированных данных и т.д. и т.п.
в своем примере я написал скорость «окончательной генерации страницы», т.е. сколько времени потребовалось от получения запроса, обработки (в данном случаем поиск по базе), обработка данных внутри шаблона и вывод страницы юзеру…
UFO just landed and posted this here
главное, чтобы юзера были довольны )
UFO just landed and posted this here
UFO just landed and posted this here
Очень жаль. Интересно было бы посмотреть.
так закодируйте чем-нибудь и вышлите (зенд инкодером например)
а почему xslt там нету?
Я в xslt не силен. Но если кто-то захочет набросать тест, то обязательно включу.
ок, у тебя там стоит расширение php_xsl?
Нет, но это не важно. Бенчить буду на пустой машине.
pastebin.com/f6154b560 — php скрипт. в конце нужно раскомментить код, чтобы трансформацию производил серер, а не клиент.
pastebin.com/f38cf48bc — xslt шаблон. я повырезал большинство атрибутов ибо меня заломало их закавычивать.

предлагаю протестить 3 режима:
1. серверная трансформация с использованием одного большого стайлшита
2. серверная трансформация с разбиением стайлшита на несколько файлов (как подключать внешние стайлшиты я там указал в комменте, )
3. клиентская трансформация (при учёте, что 90% клиентов её поддерживают — довольно актуальный и главное лёгкий для сервера режим)
Спасибо. Сейчас как раз пытаюсь добавить Lapa и Template Lite. Заодно и xslt добавлю.
Тесты готовы. Можете посмотреть в SVN. Сейчас я на веборубе, и не могу провести тестирование.
пасиба \(^_^)/

очень странно, что хслт быстрее на 4 шаблонах, чем на одном.

а вариант с клиентским наложением ты не рассматриваешь по принципиальным соображением?
6% — это случайные флуктуации от паяльника. На домашней машинке видимо был затык на винчестере, поэтому расхождения большие.

>а вариант с клиентским наложением ты не >рассматриваешь по принципиальным >соображением?
Нет, банально не успел.
Странный там тест, не сообщается о настройках сервера совершенно ничего. Да и не может XSLT из нескольких файлов быть быстрее чем из одного.
Я тестировал без акселераторов, результаты противоположные. И формировать данные лучше сразу в DOM, а не через формирование XML строки (оказалось что еще лучше с помощью SimpleXMLElement формировать DOM).
Попробую в понедельник -вторник.
а есть предложение как вступление переделать?
нужно писать статью про это: <a href=«quicky.keeperweb.com/ru/» quiky
? работает действительно быстрее
ну вот яндекс — это большой проект или маленький? а они там юзают xslt, который ещё более медленный, чем смарти.
UFO just landed and posted this here
в php, как и почти везде, юзается libxml и libxslt, так что тормозить должно везде одинаково с точностью до времени инициализации. или в дотнэте свой велосипед? сомневаюсь, что он быстрее в плане обработки — скорее всего только в плане инициализации.

в яндексе юзают эту поделку: https://opensource.yandex.ru/wsvn/xscript/trunk/#_trunk_
на фоне луа + некоторого подобия на хмл язык программирования, пхп смотрится весьма и весьма респектабельно =)
UFO just landed and posted this here
ну да, основной недостаток хслт в пхп определяется похапэшной архитектурой — xslt шаблон парсится при каждом запросе заново.

читаю новости — вот и знаю. для пауков шаблонизация вообще не нужна, а главная — да, видимо на хскрипте и работает.
UFO just landed and posted this here
что значит в процессе работы шаблон узнал что ему надо еще что-то от модели ??
вы должны контролировать модель и шаблон на 100% и знать что в эту милисекунду шаблону требуется вот это, а в след — вот то…
не должно такого быть, что вот как то случайно шаблону надо еще что-то и мы начинаем хачить…

имхо однозначно при такой работе имеет место баг в архитектуре
нет, вы в зависимости от факторов дизайна можете понять нужна ли вам дополнительная информация (например в шаблоне для своих целей куку использовать)
зачем вообще нужны шаблонизаторы, если они:
1. выполняют то что можно сделать без них
2. работают медленнее чем та же конструкция на чистом php.
зачем?
По этой причине есть другие шаблонизаторы, кроме Смарти
UFO just landed and posted this here
если есть желание могу обзор написать, тока пока всего 3 желающих
UFO just landed and posted this here
Sign up to leave a comment.

Articles