Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Смарти - зло или нет? (Константин Жинько [tIT])
Goto page 1, 2  Next
Author Message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Thu Sep 21, 2006 1:26 pm ()
   Post subject:
Reply with quote


М

Выделено из темы «Разделить по 5 фоток на строку в таблице»,
расположенной в форуме Разное :: PHP (22 Сентября 2006, 12:05).
Back to top
View user's profile Send private message
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Joined: 12 Jun 2004
Posts: 2264
Карма: 106
   поощрить/наказать

Location: Москва

PostPosted: Thu Sep 21, 2006 1:26 pm (спустя 1 секунду; написано за 4 секунды)
   Post subject:
Reply with quote

Смарти - зло
Back to top
View user's profile Send private message
Антон Макаренко
Участник форума



Joined: 05 Feb 2004
Posts: 374
Карма: 37
   поощрить/наказать

Location: Киев

PostPosted: Thu Sep 21, 2006 2:08 pm (спустя 41 минуту; написано за 2 минуты 59 секунд)
   Post subject:
Reply with quote

Rumata & Константин Жинько [tIT]
Во всяком случае там есть готовый алгоритм, который можно за 5 минут передрать на нужный манер.

p.s. А может вы дадите более весомые аргументы (где-нибудь в другом топике), почему Смарти -- зло?
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Thu Sep 21, 2006 4:03 pm (спустя 1 час 55 минут; написано за 9 минут 17 секунд)
   Post subject:
Reply with quote

Антон Макаренко, есть желание создавать новый топик на тему - создайте, или пусть модераторы отделят ветку.

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

РНР - скриптовый, интерпретируемый язык. значит при каждом запуске он будет проходить последовательно стадии компиляции и исполнения. Смарти предлагает нам другой интерпретируемый язык над РНР. можно возразить, что Смарти компилирует свой язык в РНР один раз. возможно. но качества это не прибавляет ни коду, ни шаблону. разработчик теряет контроль над кодом, верстальщик - на шаблоном.
Back to top
View user's profile Send private message
Ksnk
Участник форума



Joined: 24 Jun 2005
Posts: 459
Карма: 49
   поощрить/наказать

Location: СПб

PostPosted: Thu Sep 21, 2006 5:22 pm (спустя 1 час 18 минут; написано за 1 минуту 41 секунду)
   Post subject:
Reply with quote

Антон Макаренко
А сколько времени, по Вашему, нужно человеку, не знакомому с текстами Smarty, чтобы элементарно найти эти самые алгоритмы?
Back to top
View user's profile Send private message Send e-mail
Антон Макаренко
Участник форума



Joined: 05 Feb 2004
Posts: 374
Карма: 37
   поощрить/наказать

Location: Киев

PostPosted: Thu Sep 21, 2006 5:49 pm (спустя 27 минут; написано за 2 минуты 9 секунд)
   Post subject:
Reply with quote

Ksnk
По ссылке, которую я привел, расположены исходники html_table_foreach.
Там есть строка require_once( dirname(__FILE__)."/function.html_table.php");
Ну 10 минут, согласен.

Rumata
Не буду разжигать религиозную войну и разводить оффтоп. Мир, человече.
Back to top
View user's profile Send private message Send e-mail
bæv
Модератор «Дзена»



Joined: 27 Aug 2003
Posts: 7275
Карма: 9985
   поощрить/наказать


PostPosted: Thu Sep 21, 2006 8:14 pm (спустя 2 часа 24 минуты; написано за 6 минут 10 секунд)
   Post subject:
Reply with quote

Антон Макаренко, человек пять ячеек в цикле отсчитать не может.
Я уверен, что он за 10 минут со smarty не разберётся.
Back to top
View user's profile Send private message
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Joined: 12 Jun 2004
Posts: 2264
Карма: 106
   поощрить/наказать

Location: Москва

PostPosted: Fri Sep 22, 2006 3:03 am (спустя 6 часов 49 минут; написано за 9 минут 24 секунды)
   Post subject:
Reply with quote

Опять оффтоп - забыл, как топики разделять (в 4 утра это простительно, ИМХО):

Полностью согласен с Rumata - лично мне проще переписать работу заново, независимо от ее сложности, чем поддерживать проект на smarty.
Неудобно им пользоваться. Да и не очень я понимаю, зачем нужны подобные шаблонизаторы? Это лет 5-6 назад в эпоху php3 (когда в него добавили расширение для работы с т.н. классами) было прикольно писать движки, парсящие конструкции вроде:
Code (any language): скопировать код в буфер обмена
<tr>
        <td>{$nick}</td>
        <td>{$mail}</td>
</tr>
Сейчас есть более интересные идеи и технологии. Для генерации кода лучше xml/xslt использовать, чем смарти - один раз запускается скрипт, дальше код выполняется. Без всяких промежуточных действий. Для шаблонизации лучше использовать сам php.

ИМХО. И, похоже, это ИМХО - объективная реальность. Чем чаще с этой штукой (смарти, не реальность) сталкиваюсь, тем больше в этом убеждаюсь.
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Fri Sep 22, 2006 11:32 am (спустя 8 часов 28 минут; написано за 3 минуты 28 секунд)
   Post subject:
Reply with quote

//offtop
Константин Жинько [tIT] wrote:
забыл, как топики разделять
кнопка надо формой ответа.
Back to top
View user's profile Send private message
Alkeeper
Заглянувший



Joined: 25 Jul 2006
Posts: 18
Карма: 2
   поощрить/наказать

Location: Новосибирск

PostPosted: Fri Sep 22, 2006 3:27 pm (спустя 3 часа 55 минут; написано за 7 минут 7 секунд)
   Post subject:
Reply with quote

Константин Жинько [tIT]
Ваши рассуждения довольно спорны, Смарти гораздо проще для понимания простому верстальщику, чем упомянутые Вами XML/XSLT, кроме того хочу заметить, что в смарти выполняются (прошу не придираться к определению слова "компиляция") уже скомпилированные PHP шаблоны, в отличие от того же phpBB, которые, насколько мне известно, парсятся при каждой загрузке.
За себя скажу, что пользуюсь Смарти уже более трех лет, а столкнулся именно при необходимости развить проект на Смарти. Не скажу, что разобрался за 10 минут, но и двух дней не потратил. А переписывать из-за этого проект - это утопия ;) Опять же - ИМХО...
Back to top
View user's profile Send private message Send e-mail
Rin
Участник форума



Joined: 01 Jun 2005
Posts: 515
Карма: 185
   поощрить/наказать

Location: Москва

PostPosted: Fri Sep 22, 2006 3:43 pm (спустя 16 минут; написано за 1 минуту 3 секунды)
   Post subject:
Reply with quote

Согласен с Константин Жинько [tIT]
Смарти - зло.

Лучший шаблонизатор - сам PHP.
PHPTemplate class (forum.dklab.ru/viewtopic.php?p=86873#110539)
Back to top
View user's profile Send private message Send e-mail
Alkeeper
Заглянувший



Joined: 25 Jul 2006
Posts: 18
Карма: 2
   поощрить/наказать

Location: Новосибирск

PostPosted: Fri Sep 22, 2006 4:38 pm (спустя 54 минуты; написано за 48 секунд)
   Post subject:
Reply with quote

Это не шаблонизатор, а смесь,PHP и HTML в голом виде безо всякой идеи...
ИМХО
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Fri Sep 22, 2006 5:11 pm (спустя 33 минуты; написано за 5 минут 48 секунд)
   Post subject:
Reply with quote

Alkeeper wrote:
Смарти гораздо проще для понимания простому верстальщику
может быть. года 2 назад у меня было желание изучить смарти. но мне было достаточно поизучать доки, чтобы понять что смарти это сложный путь.

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

имхо
смарти писали программисты для непрограммистов
рнрББ писали непрограммисты, переквалифицировавшиеся в программисты
Back to top
View user's profile Send private message
Alkeeper
Заглянувший



Joined: 25 Jul 2006
Posts: 18
Карма: 2
   поощрить/наказать

Location: Новосибирск

PostPosted: Fri Sep 22, 2006 5:29 pm (спустя 17 минут; написано за 3 минуты 5 секунд)
   Post subject:
Reply with quote

Просто в качестве примера приведу шаблон календаря (вывод месяца, в виде привычной таблицы по неделе в ряд), особенногсти html несущественны
Code (html): скопировать код в буфер обмена
{* Smarty Calendar template*}
<table (december.com/html/4/element/table.html) align="center" cellpadding="4" cellspacing="0" border="1"> (december.com/html/4/element/.html)
<tr> (december.com/html/4/element/tr.html)
        <td (december.com/html/4/element/td.html) colspan="3"> (december.com/html/4/element/.html)<small> (december.com/html/4/element/small.html){$year}</small></td>
        <td (december.com/html/4/element/td.html) colspan="4"> (december.com/html/4/element/.html)<small> (december.com/html/4/element/small.html){$month}</small></td>
</tr>
<tr> (december.com/html/4/element/tr.html)
        <td> (december.com/html/4/element/td.html)<small> (december.com/html/4/element/small.html)Пн</small></td>
        <td> (december.com/html/4/element/td.html)<small> (december.com/html/4/element/small.html)Вт</small></td>
        <td> (december.com/html/4/element/td.html)<small> (december.com/html/4/element/small.html)Ср</small></td>
        <td> (december.com/html/4/element/td.html)<small> (december.com/html/4/element/small.html)Чт</small></td>
        <td> (december.com/html/4/element/td.html)<small> (december.com/html/4/element/small.html)Пт</small></td>
        <td (december.com/html/4/element/td.html) bgcolor="#EAEAEA"> (december.com/html/4/element/.html)<small> (december.com/html/4/element/small.html)Сб</small></td>
        <td (december.com/html/4/element/td.html) bgcolor="#CACACA"> (december.com/html/4/element/.html)<small> (december.com/html/4/element/small.html)Вс</small></td>
</tr>
{section name=m loop=$days}
{if $days[m].num == '1'}<tr> (december.com/html/4/element/tr.html){/if}
{if $days[m].current}<td (december.com/html/4/element/td.html) bgcolor="#ffccaa"> (december.com/html/4/element/.html)<small> (december.com/html/4/element/small.html){if $days[m].uri}<a (december.com/html/4/element/a.html) href="{$days[m].uri}"> (december.com/html/4/element/.html){$days[m].day}</a>{else}{$days[m].day}{/if}</small></td>
{else}<td (december.com/html/4/element/td.html){if $days[m].num == 6} bgcolor="#EAEAEA"{elseif $days[m].num == 0} bgcolor="#CACACA"{/if}> (december.com/html/4/element/.html)<small> (december.com/html/4/element/small.html){if $days[m].uri}<a (december.com/html/4/element/a.html) href="{$days[m].uri}"> (december.com/html/4/element/.html){$days[m].day}</a>{else}{$days[m].day}{/if}</small></td>
{/if}
{if $days[m].num == '0'}</tr>{/if}
{/section}
</table>
то же самое в xml/xsl
Code (xml): скопировать код в буфер обмена
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xhtml" indent="yes" encoding="Windows-1251"/>

<xsl:template match="all">
        <table class="cal_tab" align="center" cellpadding="0" cellspacing="1" style="background: #000000">
                <xsl:apply-templates select="my"/>
                <tr>
                        <td class="day_cell"><b>Пн</b></td>
                        <td class="day_cell"><b>Вт</b></td>
                        <td class="day_cell"><b>Ср</b></td>
                        <td class="day_cell"><b>Чт</b></td>
                        <td class="day_cell"><b>Пт</b></td>
                        <td class="day_cell"><b>Сб</b></td>
                        <td class="week_end"><b>Вс</b></td>
                </tr>
                <xsl:apply-templates select="days"/>
        </table>
</xsl:template>

<xsl:template match="my">
        <tr>
                <td class="month" colspan="3"><xsl:value-of select="year" disable-output-escaping="yes"/></td>
                <td class="year" colspan="4"><xsl:value-of select="month" disable-output-escaping="yes"/></td>
        </tr>
</xsl:template>

<xsl:template match="days">
                <tr>
                        <td class="day_cell"><xsl:apply-templates select="//day[position() mod 7 = 1]"/></td>
                        <td class="day_cell"><xsl:apply-templates select="//day[position() mod 7 = 2]"/></td>
                        <td class="day_cell"><xsl:apply-templates select="//day[position() mod 7 = 3]"/></td>
                        <td class="day_cell"><xsl:apply-templates select="//day[position() mod 7 = 4]"/></td>
                        <td class="day_cell"><xsl:apply-templates select="//day[position() mod 7 = 5]"/></td>
                        <td class="day_cell"><xsl:apply-templates select="//day[position() mod 7 = 6]"/></td>
                        <td class="week_end"><xsl:apply-templates select="//day[position() mod 7 = 0]"/></td>
                </tr>
</xsl:template>

<xsl:template match="day">
        <div class="day" style="margin: 0px 0px 1px 0px">
                <xsl:choose>
                        <xsl:when test="uri != ''">
                                <b><a>
                                        <xsl:attribute name="href"><xsl:value-of select="uri" disable-output-escaping="yes"/></xsl:attribute>
                                        <xsl:value-of select="fig" disable-output-escaping="yes"/>
                                </a></b>
                        </xsl:when>
                        <xsl:otherwise><xsl:value-of select="fig" disable-output-escaping="yes"/></xsl:otherwise>
                </xsl:choose>
        </div>
</xsl:template>

</xsl:stylesheet>
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Fri Sep 22, 2006 5:47 pm (спустя 18 минут; написано за 7 секунд)
   Post subject:
Reply with quote

что это?
Back to top
View user's profile Send private message
Alkeeper
Заглянувший



Joined: 25 Jul 2006
Posts: 18
Карма: 2
   поощрить/наказать

Location: Новосибирск

PostPosted: Fri Sep 22, 2006 5:56 pm (спустя 8 минут; написано за 9 секунд)
   Post subject:
Reply with quote

На самом деле наш спор рискует перейти в область разделения труда программиста-кодера-верстальщика.
главная задача программиста, имхо, правильно организовать размещение и передачу данных, вопрос визуализации уже в области ответственности кодера-верстальщика, что ему проще, то мы и выбираем, исходя из имеющихся трудовых ресурсов.
Просто наобум говорить, что Смарти или другие шаблонные инструменты есть зло - это дилетантство и профанация, опять же имхо, если у меня есть возможномть пользоваться в проекте средствами xml/xslt - ради бога, если уменя есть человек, который грамотно сверстает xsl часть - всем сердцем "за"... а если нет, обучить человека с голого хтмла на смарти гораздо проще, чем обучать принципам xml, xsl,xpath и т.д. все дело в том, чего мы хотим, и что для этого имеем... выбор должен основываться на объективных предпосылках, а не на том, что один какой-то "гуру" сказал. Производительность кстати не так уж и отличается в двух рассматриваемых нами случаях (phpBB не в счет - это вообще какое-то дилетантство).
Back to top
View user's profile Send private message Send e-mail
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Fri Sep 22, 2006 6:33 pm (спустя 36 минут; написано за 4 секунды)
   Post subject:
Reply with quote

Alkeeper
Ваш пример отлично подтвержадет моё мнение: шаблоны на Смарти прекрасно заменяются на php-код и неприемлемы для HTML-валидатора. Для меня это вполне достаточная причина, чтобы не пользоватья Смарти.
Back to top
View user's profile Send private message
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Joined: 12 Jun 2004
Posts: 2264
Карма: 106
   поощрить/наказать

Location: Москва

PostPosted: Fri Sep 22, 2006 10:05 pm (спустя 3 часа 31 минуту; написано за 7 минут 29 секунд)
   Post subject:
Reply with quote

Alkeeper
Обратите внимание, насколько красив код во втором примере!
Alkeeper wrote:
Просто наобум говорить, что Смарти или другие шаблонные инструменты есть зло - это дилетантство и профанация
Я, например, не наобум говорю. Никто здесь наобум не говорит. Говорить наобум - скорее пофигизм, чем дилетантство и профанация (-;
Alkeeper wrote:
обучить человека с голого хтмла на смарти гораздо проще
Такие трудовые ресурсы (-;
Я не могу назвать верстальщиком человека, который не знает DOM, XHTML, CSS2, ECMAScript - а тому, кто это знает, разобраться с каким-то там xslt особой трудности не вызывает.

Типичный пример: russiannightsfest.com/
Дизайн - отвратительно! (имхо)
Верстка - отвратительно! (объективно)
Программирование - никуда не годится! (используется smarty)

Этот сайт делали люди, которым было проще разобраться со smarty, чем даже с самим php. Вопрос: кому нужны такие работы, а следовательно такие кадры? Ответ очевиден: мелким конторам, которые знать не желают про какие-то там сайты, а хотят побыстрее сдать проект и получить копеечное бабло. Здесь все-таки форум web-разработчиков, а не халтурщиков (хотя и такой публики здесь полно), поэтому предлагать использовать инструменты, способствующие деградации мозга.

Во, как загнул (-;
Back to top
View user's profile Send private message
Alkeeper
Заглянувший



Joined: 25 Jul 2006
Posts: 18
Карма: 2
   поощрить/наказать

Location: Новосибирск

PostPosted: Sat Sep 23, 2006 4:40 pm (спустя 18 часов 35 минут; написано за 20 минут 39 секунд)
   Post subject:
Reply with quote

Maus Насчет html валидатора вы зря, Смарти способен отдать валидный код (xhtml, xml, wml - неважно), вопрос в том, как составлен шаблон, а это зависит уже от человека, а никак не от программы. Соглашусь, в моем примере шаблона на Смарти html никуда не годится (я выдрал его из одного своего старого проекта). Смарти - это всего лишь уровень абстракции, он не генерит, что ему самому вздумается.

Константин Жинько [tIT]
Приведенный Вами пример (не знаю, что там делали со Смарти), верстан, если не ошибаюсь в MS FrontPage, судя по характерным особенностям имен аттрибутов и заглавным символам в именах тегов, а это уже есть зло, использовалось там Смарти или же нет :)
Про дизайн промолчу, я не дизайнер и не художник, я вообще плохо рисую, разве что карикатуры :).
Ваши слова:
>> Программирование - никуда не годится! (используется smarty)

Смарти - это не программирование, а визуализация контента, в своих функциях (методах) вы получаете на вход какие-то аргументы, отправляете запрос к базе и возвращаете, как правило, значение или массив значений (реже объект), отдаете результат в Смарти, который расставляет в нужном порядке ваши данные. Повторюсь - это уровень абстракции от PHP так же как и PEAR::DB или такая мощная вещь как Zend Framework, или все это тоже Зло???

Смарти - Это просто средство ускорения разработки со своими преимуществами и недостатками. В конце концов важно то, чтобы программа возвращала валидный код и быстро. Смарти это умеет.

А насчет деградации мозга вы тоже зря, я как-то столкнулся с задачей, для решения которой понадобилось смешать синтаксис PHP, Javascript и Smarty вперемешку... И все получилоь довольно стройно.

По идее, если Смарти и Зло, то не большее чем иные средства визуализации.
Опять же ИМХО.
Back to top
View user's profile Send private message Send e-mail
Антон Макаренко
Участник форума



Joined: 05 Feb 2004
Posts: 374
Карма: 37
   поощрить/наказать

Location: Киев

PostPosted: Sat Sep 23, 2006 9:54 pm (спустя 5 часов 14 минут; написано за 8 минут 34 секунды)
   Post subject:
Reply with quote

Константин Жинько [tIT] & Rin
Какая программисту разница, какой шаблонизатор "хавает" его код? Нравится писать шаблоны на чистом PHP или писать собственный контроллер — пожалуйста. Maus, Вы за XML/XSLT, я так понимаю? Не поделитесь ссылочками на примеры проектов, написанных на PHP+XML+XSLT?
Смарти, как развитый шаблонизатор полностью решает задачу отделения бизнес-логики от представления. Отлично подходит для маленьких и средних проектов, а при грамотном проектировании -- для крупных.
Константин Жинько [tIT] wrote:
Смарти - зло
Смарти — темная магия.
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sat Sep 23, 2006 11:00 pm (спустя 1 час 5 минут; написано за 1 секунду)
   Post subject:
Reply with quote

ИМХО смарти - это лишняя нагрузка на дизайнера. Он все равно не будет разбираться в устройстве ваших массивов и функций и все равно шаблон придется править вам. Зачем весь этот гемморой с якобы заботой о дизайнере - непонятно. Так что ИМХО вообще добавлять логику в шаблон не надо. Или добавлять в виде PHP-кода, чтобы не создавать лишних, никому не нужных, синтаксических конструкций.
Back to top
View user's profile Send private message Send e-mail
Антон Макаренко
Участник форума



Joined: 05 Feb 2004
Posts: 374
Карма: 37
   поощрить/наказать

Location: Киев

PostPosted: Sun Sep 24, 2006 12:10 am (спустя 1 час 9 минут; написано за 5 минут 37 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов
[imho]
Дизайнер не должен писать шаблоны, он их придумывает. А для реализации шаблонов существуют кодеры. В случае с "активными" (как говорил Дмитрий Котеров) шаблонизаторами кодеру нужно еще и программировать уметь.
[/imho]
Юpий Насрeтдинов wrote:
чтобы не создавать лишних, никому не нужных, синтаксических конструкций
Согласен с Вами: Смарти не является стандартным, как XSL например, и поэтому долго не сможет существовать и не будет таким распространенным.
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sun Sep 24, 2006 10:06 am (спустя 9 часов 56 минут; написано за 1 минуту 10 секунд)
   Post subject:
Reply with quote

Антон Макаренко wrote:
Дизайнер не должен писать шаблоны, он их придумывает. А для реализации шаблонов существуют кодеры.
Я высказал свою точку зрения применительно к тому, что я обычно наблюдаю - дизайнер, он же кодер, он же чуть-чуть программист, он же ещё кто-то... :) В такой ситуации я считаю применение активных шаблонов излишним :). Как и XSL, если честно.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Sun Sep 24, 2006 9:24 pm (спустя 11 часов 17 минут; написано за 2 минуты 27 секунд)
   Post subject:
Reply with quote

По моему мнению, Smarty хорош тем, что ограничивает простор и не дает использовать то, что использовать в шаблонах плохо. Например, не получится вызвать какую-нибудь функцию на PHP или вставить большой кусок кода. Часто это оказывается плюсом, особенно если проект развивается неконтролируемо.

Я делал проекты и со Смарти, и без Смарти (с шаблонами на чистом PHP). Субъективно те, где был Смарти, с точки зрения шаблонов попроще и поуниверсальнее (например, если подребуется сделать поддержку множественных скинов, это там проще).
Back to top
View user's profile Send private message Send e-mail
bæv
Модератор «Дзена»



Joined: 27 Aug 2003
Posts: 7275
Карма: 9985
   поощрить/наказать


PostPosted: Mon Sep 25, 2006 1:00 am (спустя 3 часа 36 минут; написано за 16 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
Например, не получится вызвать какую-нибудь функцию на PHP или вставить большой кусок кода.
Разве?
Back to top
View user's profile Send private message
Антон Макаренко
Участник форума



Joined: 05 Feb 2004
Posts: 374
Карма: 37
   поощрить/наказать

Location: Киев

PostPosted: Mon Sep 25, 2006 2:45 am (спустя 1 час 44 минуты; написано за 5 минут 57 секунд)
   Post subject:
Reply with quote

Можно в шаблоны Смарти лепить и куски HTML, и PHP-код инклудить. А внутри конструкции {if} можно вызывать любую функцию PHP. Неправильное использование (да или вообще использование) этих возможностей и есть зло.
David Ulevitch wrote:
The use of Dark Magic without careful forethought can lead to pain
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Mon Sep 25, 2006 11:39 am (спустя 8 часов 54 минуты)
   Post subject:
Reply with quote

Смарти действительно сильно ограничивает доступ к многим функциям и переменным. В результате иногда приходится долго материться, и все равно править руками и код скрипта и шаблон... Так что не знаю, достоинство ли это.
Back to top
View user's profile Send private message Send e-mail
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Mon Sep 25, 2006 12:34 pm (спустя 54 минуты; написано за 4 минуты)
   Post subject:
Reply with quote

Alkeeper wrote:
Смарти способен отдать валидный код (xhtml, xml, wml - неважно)
Я не говорил, что Смарти неспособен отдать валидный код. Я говорил, что сам Смарти-шаблон не является валидным кодом. То есть я не могу скормить шаблон валидатору и узнать, что в любом случае хотя бы синтаксических ошибок не будет.
Антон Макаренко wrote:
Maus, Вы за XML/XSLT, я так понимаю?
я этого не говорил (: . Я вот за что:
Quote:
если хочется смешать PHP и HTML, то лучше делать это напрямую, а не добавлять тудя ещё и Смарти
. Из этого, заметьте, не следует, что я - за смешивание PHP и HTML.
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Mon Sep 25, 2006 12:54 pm (спустя 20 минут; написано за 2 минуты 5 секунд)
   Post subject:
Reply with quote

Антон Макаренко wrote:
А внутри конструкции {if} можно вызывать любую функцию PHP
Да и методы без проблем вызываются, насколько помню. Зато если надо обратиться к элементу многомерного массива (типа $arr['fields'][$i]['value']) - иногда просто на стенку лезешь.
Back to top
View user's profile Send private message
Alkeeper
Заглянувший



Joined: 25 Jul 2006
Posts: 18
Карма: 2
   поощрить/наказать

Location: Новосибирск

PostPosted: Mon Sep 25, 2006 3:41 pm (спустя 2 часа 46 минут; написано за 12 минут 25 секунд)
   Post subject:
Reply with quote

Maus wrote:
Я не говорил, что Смарти неспособен отдать валидный код. Я говорил, что сам Смарти-шаблон не является валидным кодом. То есть я не могу скормить шаблон валидатору и узнать, что в любом случае хотя бы синтаксических ошибок не будет.
Единственное в чем можно обвинить Смарти, с этой точки зрения - в заваливании error логов нотайсами о неопределенных переменных и неопределенных индексах в массиве. Кстати, а в соответствии с какими стандартами Вы хотели бы проверять на валидность Smarty-код?

Что касается трансляции сущностей типа $variable['ind'][$ind]['somethingelse'] тут все зависит от задачи, если вы пытаетесь передать внутри шаблона в элемент в качестве индекса ($ind) что-то аналогичное ($other_variable['ind']['bla-bla'][5]['somethingelse']), тогда не обойтись без обходных путей из-за конфликта синтаксиса Смарти (приходится использовать доп. средства Смарти), в прочих ситуациях эта задача примитивна.
Back to top
View user's profile Send private message Send e-mail
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Mon Sep 25, 2006 3:50 pm (спустя 9 минут; написано за 2 минуты 48 секунд)
   Post subject:
Reply with quote

Alkeeper wrote:
в соответствии с какими стандартами Вы хотели бы проверять на валидность Smarty-код?
хотя бы HTML 4.01 Transitional
Alkeeper wrote:
Что касается трансляции сущностей
да обычный вывод строковых данных с конкатенацией и обработкой модификаторами. Приходилось ставить лишний {assign}
Back to top
View user's profile Send private message
Alkeeper
Заглянувший



Joined: 25 Jul 2006
Posts: 18
Карма: 2
   поощрить/наказать

Location: Новосибирск

PostPosted: Mon Sep 25, 2006 4:00 pm (спустя 9 минут; написано за 2 минуты 48 секунд)
   Post subject:
Reply with quote

Maus wrote:
хотя бы HTML 4.01 Transitional
Да уж, врядли такое понравится валидатору :) :
Code (html): скопировать код в буфер обмена
<td (december.com/html/4/element/td.html) class="{if $smarty.section.i.iteration % 2 == '0'}one_class{else}another_class{/if}"> (december.com/html/4/element/.html)
Maus wrote:
да обычный вывод строковых данных с конкатенацией и обработкой модификаторами. Приходилось ставить лишний {assign}
Да, я делаю точно также.
Back to top
View user's profile Send private message Send e-mail
Антон Макаренко
Участник форума



Joined: 05 Feb 2004
Posts: 374
Карма: 37
   поощрить/наказать

Location: Киев

PostPosted: Mon Sep 25, 2006 5:20 pm (спустя 1 час 20 минут; написано за 1 минуту 15 секунд)
   Post subject:
Reply with quote

Alkeeper wrote:
<td class="{if $smarty.section.i.iteration % 2 == '0'}one_class{else}another_class{/if}">
Code (html): скопировать код в буфер обмена
<td (december.com/html/4/element/td.html) class="{cycle values="one_class,another_class"}"> (december.com/html/4/element/.html)
:-P
Back to top
View user's profile Send private message Send e-mail
Alkeeper
Заглянувший



Joined: 25 Jul 2006
Posts: 18
Карма: 2
   поощрить/наказать

Location: Новосибирск

PostPosted: Mon Sep 25, 2006 5:42 pm (спустя 22 минуты; написано за 2 минуты 6 секунд)
   Post subject:
Reply with quote

Антон Макаренко
Может быть мой пример не самый эффективный ;) Однако, в ключе рассматриваемого вопроса, реализация непринципиальна, валидатор один черт взбунтуется ;)
Back to top
View user's profile Send private message Send e-mail
Agat
Участник форума



Joined: 30 Jun 2006
Posts: 67
Карма: 3
   поощрить/наказать


PostPosted: Tue Sep 26, 2006 2:36 am (спустя 8 часов 54 минуты)
   Post subject:
Reply with quote

Уважаемые господа хочу внести свою лепту, т.к. я можно сказать начинающий осваиватьPHP и ни каких больших проектов за спиной нет. По поводу Smarty хочу сказать, что он просто таки заставляет отделять php от html (видели бы вы мои первые скрипты, я сам через неделю не мог разобрать что там такое написано) и конечно ни кто не запрещает вносить рнр код в шаблон ,но и не рекомендуют.
SMARTY это просто средство представления, и он не виноват что его иногда используют криво. Не нужно спорить разные проекты - разные потребности, и разные инструменты. Я считаю, что смарти имеет право на существование, плохой он или хороший он есть (вот бы его переписали на рнр5 еще)

Огромная просьба, не могли бы вы поделится ссылкой на XML/XSLT (только не отправляйте к мануалу) где бы все более менее понятно расписано, или такую, которую бы сами с удовольствием читали (лучше второе), а может быть кто то порекомендует книгу.
[offtop]
Наверное вам не интересно, но все таки я напишу.
Хорошую книгу можно перечитывать по нескольку раз, и всегда в ней можно найти что то новое, какое то решение по мере прочтения заставляет вернутся назад к источнику, для меня таким источником был самоучитель Д. Котерова рнр4. В те времена я работал в Москве не важно кем, важно другое 5часов ежедневно тратилось на дорогу 2.5 туда 2.5 обратно. и так 6 месяцев за которые я узнал что такое переменная, массив, запрос и все остальные кодерские штучки. А книга попалась в руки чисто случайно, (нужно было что то по тому как устроен интернет.(домены, хостеры и т.д.)) времени не было забежал в книжный магазин "Красная Пресня" открыл первое что попалось под руку: -"ага есть". а дальше понесло, ежедневное 5и часовое вдалбливание рнр,... А ведь раньше я считал что програмирование не интересное, скучное занятие. Однако сколько оно приносит эмоций (закругляюсь, что то меня пробило)
[/offtop]

Так вот смарти
1 заставляет разделять код (организация большое дело).
2 прост для понимания новичку.
3 авторитетность (находится на сайте рнр)-спорно конечно но все же
4 более менее шустро работает (если отключить перекомпиляцию)

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

(это первое что попалось из шаблонизаторов с боле менее подробным мануалом, поэтому это близко)
Back to top
View user's profile Send private message
Никита Косолaпов
Участник форума



Joined: 08 Aug 2006
Posts: 172
Карма: 9
   поощрить/наказать

Location: Москва

PostPosted: Tue Sep 26, 2006 6:48 am (спустя 4 часа 11 минут; написано за 2 минуты 54 секунды)
   Post subject:
Reply with quote

Smarty - инструмент. А инструмент не умеет быть ни добрым, ни злым. Он бывает только хорошим или плохим, удобным или неудобным, к месту или не к месту. И еще многое зависит от радиуса кривизны рук пользующегося инструментом.
Так что Smarty - зло, но только в руках неумелого или фанатика, который стремится применять Smarty везде, где только можно.
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Tue Sep 26, 2006 7:15 am (спустя 27 минут; написано за 1 минуту 42 секунды)
   Post subject:
Reply with quote

Agat
по моему, тот случай, когда мнение новичка, более ценно, чем мнение профессионала. вы только не останавливайтесь только на одной технологии.
Agat wrote:
поделится ссылкой на XML/XSLT ... может быть кто то порекомендует книгу
Холзнер. у него есть серия книг, посвященных XML/XSLT
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Tue Sep 26, 2006 10:49 am (спустя 3 часа 33 минуты; написано за 2 минуты 29 секунд)
   Post subject:
Reply with quote

Никита Косолапов wrote:
Smarty - инструмент.
Если инструмент, то навроде малярной кисти или топора. Может прийти момент, когда захочется взять в руки кисточку художника или скальпель.
Rumata
для новичка Смарти, наверное, действительно может быть полезен. Документация, примеры и всё такое.
Back to top
View user's profile Send private message
Agat
Участник форума



Joined: 30 Jun 2006
Posts: 67
Карма: 3
   поощрить/наказать


PostPosted: Tue Sep 26, 2006 10:58 pm (спустя 12 часов 9 минут; написано за 39 секунд)
   Post subject:
Reply with quote

Rumata, спасибо, поищу :-)
Back to top
View user's profile Send private message
Rin
Участник форума



Joined: 01 Jun 2005
Posts: 515
Карма: 185
   поощрить/наказать

Location: Москва

PostPosted: Wed Sep 27, 2006 11:06 am (спустя 12 часов 8 минут; написано за 4 минуты 11 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов wrote:
ИМХО смарти - это лишняя нагрузка на дизайнера. Он все равно не будет разбираться в устройстве ваших массивов и функций и все равно шаблон придется править вам. Зачем весь этот гемморой с якобы заботой о дизайнере - непонятно. Так что ИМХО вообще добавлять логику в шаблон не надо. Или добавлять в виде PHP-кода, чтобы не создавать лишних, никому не нужных, синтаксических конструкций.
Полностью согласен, вот только логику в шаблон добавлять так или иначе приходится.
Я когда-то пользовался самописным шаблонизатором, потом засматривался на Smarty, но пришел к выводу, что PHP, при его грамотном использовании дает гораздо больше возможностей: большую функциональность, скорость и удобство отладки скриптов.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Goto page 1, 2  Next
Page 1 of 2    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML