обсуждение шаблонизатора Blitz

Фанат

oncle terrible
Команда форума
передо мной не стоит такой цели - сказать кому-то, что он идиот.
я всего лишь разочаровался в тебе, как в собеседнике.

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

-~{}~ 13.12.06 01:46:

StUV
только не первый, а последний.
но юмор я оценил =)
 

Develar

Новичок
StUV
Мне 20 лет. Фанат не тот, насколько я знаю, на которого можно плюнуть. И если говорится что я пишу кривой код - я хочу разобраться. Наставников у меня нет, за деньги все нормальные отнекиваются нехваткой времени. Вот и хочу разобраться, иду ли по той дороге что надо.

Фанат
Мы говорим вообще. Таблица примитивна, но какие данные она получает - в этом вся сложность. Я сейчас напишу код, и, надеюсь, у вас найдется время его оценить.
 

Фанат

oncle terrible
Команда форума
зачем?
какой в этом будет смысл?
для чего ты собрался писать на пхп код, который будет выводить данные из массива в первом примере?

-~{}~ 13.12.06 01:57:

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

Develar

Новичок
$Template = new Blitz('test.tpl');
$Template->context('entry');
foreach (range('A', 'Z') as $uri => $title)
{
$Template->block('item', array('uri' => $uri, 'title' => $title));
}
echo $Template->parse();

И http://phpclub.ru/paste/index.php?show=1578
 

Фанат

oncle terrible
Команда форума
поправь меня, если я ошибаюсь
но ведь range('A', 'Z') - это не дерево?

-~{}~ 13.12.06 02:19:

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

ты можешь сделать вывод http://airs.ru/map
используя шаблон
{BEGIN entry}
<ul>
{BEGIN item}
<li><a href="{$uri}">{$title}</a>
{END}
</ul>
{END}

?
Я не уверен, но мне кажется, что это возможно.
 

Develar

Новичок
Фанат
Простите, но вы меня попросили привести код для blitz шаблона - я привел. Какое дерево вам нужно вывести?
 

Фанат

oncle terrible
Команда форума
для этого код обработки шаблона должен быть рекурсивным.
т.е. вызывающим сам себя.
реально рекурсивным, а не потому, что в нём используются красивые слова типа iterate и пр.

Надо, кстати, у автора спросить - реально ли это.

-~{}~ 13.12.06 02:21:

я там дописал после.
 

Develar

Новичок
http://airs.ru/map невозможно построить при помощи

{BEGIN entry}
<ul>
{BEGIN item}
<li><a href="{$uri}">{$title}</a>
{END}
</ul>
{END}

потому что airs.ru/map из шаблона dir_toc который получает данные в массиве типа http://phpclub.ru/paste/index.php?show=1578

Вы хотите лишь с помощью приведенного вами шаблона вывести все дерево - лишь с помощью этого куска??? Это реально, - метод fetch.

-~{}~ 13.12.06 02:26:

Я правильно Вас понял, что Вы хотите рекурсивно загружать этот шаблон для различной вложенности списка?
 

Develar

Новичок
Фанат
Если вы хотите лишь с помощью этого куска вывести все дерево airs.ru. И при этом использую то, что вы назвали "реально рекурсивным". То да, это реально - метод fetch. Но делать это с помощью fetch мне кажется извращением. Вы хотите чтобы я написал подобный код, код http://phpclub.ru/paste/index.php?show=1575 вам кажется длинным?

-~{}~ 13.12.06 02:45:

И что Вы думаете о http://phpclub.ru/paste/index.php?show=1578 том моем самом первом примере
 

Фанат

oncle terrible
Команда форума
нет, не хочу.
я хочу, чтобы ты понял - я от тебя не хочу вообще ничего.
а тем более - кода.
понять, разве что, ход твоих мыслей. if any.
делать это с помощью fetch мне кажется извращением
ты, почему-то, всё время ударяешься в частности.
куда угодно - то только в сторону от главного. как магнит с тем же зарядом.
я тебя спрашиваю про шаблон - ты мне про рекурсию.
я тебя спрашиваю про шаблон - ты мне про фетч.

Я говорю про шаблон. Только. Я вижу перед собой только шаблон.
Точнее - два.
Твой, с greater
И мой, из 5 строчек.
Смотрю я на них, и думаю: вроде бы - очевидно, что второй в сто раз лучше первого. И если можно им воспользоваться, то не может быть ни одной причины продолжать пользоваться первым!
Для меня это аксиома.
И тут появляешься ты, и говоришь, что у тебя есть какие-то причины полагать, что более простой шаблон - извращение.
Мне это совершенно непонятно.

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

-~{}~ 13.12.06 02:53:

по поводу http://phpclub.ru/paste/index.php?show=1578
не проверял, но мне кажется, что массив, который выводит содержимое ячеек, можно получить простым откусыванием от массива $data первого элемента.
и дальше просто выводить одним циклом.

-~{}~ 13.12.06 03:05:

код http://phpclub.ru/paste/index.php?show=1575 вам кажется длинным?
хм.
а тебе - нет?
 

Develar

Новичок
кажись дошло...

-~{}~ 13.12.06 03:12:

В моем шаблоне "шаблонизатор должен кланяться на каждый чих в шаблоне", тем самым я одновременно и обрабатываю данные и вывожу их - а верстальщик вместо понятного open/close получает equal/less/greater, - а я должен убрать логику обработки и оставить только логику вывода, тем самым я упрощаю шаблон, усложняя код контроллера - там этой сложности и место...
 

Develar

Новичок
Фанат
в плане что мои equal/less/greater еще ужаснее. но в общем, до меня дошло то что надо? "должен убрать логику обработки и оставить только логику вывода"
 

Фанат

oncle terrible
Команда форума
ПРИ ЧЁМ ЗДЕСЬ open/close ВООБЩЕ? когда мы про них последний раз говорили?
И каким ни здесь боком?

Не говоря уже о том, что это ОДНО И ТО ЖЕ с less/greater.

Я ваще перестал тебя понимать.
Может, тебе пойти вздремнуть часиков 10?

-~{}~ 13.12.06 03:22:

в плане что мои equal/less/greater еще ужаснее
ну как они могут быть ужаснее, если они идентичны! просто как однояйцевые близнецы моим open close!

-~{}~ 13.12.06 03:23:

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

-~{}~ 13.12.06 11:05:

В общем, если ты ждал от меня какого-то откровения. причём в повелительном наклонении.
1. Такого не будет. Если бы существовало одно Самое Лучшее Решение, то все давно бы пользовались им.
2. Всё, что я хотел показать - что пытаясь представить шаблоны с контекстами, как шаблоны "без логики", ты занимаешься самообманом. Логика есть. причём
а) она растянута на два файла - шаблон и контроллер
б) Она незримо присутствует. Верстальщик ДОЛЖЕН понимать, что происходит внутри того или иного шаблона. У него в голове должен быть интерпретатор с языка шаблонов.
Как раз интерпретировать незначащие операторы сложнее, чем чётко обозначенные.
3) В процессе дискуссии до меня вдруг дошло, что мне впервые показали преимушество стыдливых шаблонов перед честными. Это возможность вывести дерево без уродливых подпорок. (Что меня ПОРАЗИЛО - это твоя реакция на это. Никакая)
4) Я пытался показать тебе, что на том уровне, на котором ты используешь Blitz, он НИЧУТЬ не лучше любого другого шаблонизатора, включая нэйтив пехапе. Операции ВСЕ ТЕ ЖЕ САМЫЕ.
А ты упорно называешь обработку шаблона благом, а пред-обработку данных - злом. В чужом глазу бревно видит, в своём - нет.
Но это уже к шаблонам имеет отдалённое отношение, а скорее к логике
 

Develar

Новичок
до меня все это дошло. сравнил код шаблона php с blitz - 4 пункт - все то же самое, только контекст и как foreach и как if... сижу перевариваю. спасибо за четкую формулировку и резюме дискуссии.
 

Фанат

oncle terrible
Команда форума
Надо сказать, что ты поколебал мою уверенность в том, что родной пхп покрывает все возможные случаи использования шаблонов (кроме того, когда шаблон правит не доверенный пользователь).

-~{}~ 13.12.06 11:35:

собственно, мысль, которую я толкал, описана здесь
http://community.livejournal.com/ru_php/789059.html
ну, и обсуждение.
 

С.

Продвинутый новичок
Фанат, мне кажется, ты противник "нестандартного" РНР в шаблонах. А я вот не брезгую. Если проект требует какой-то функциональности и элегантного шаблона при этом, то я ввожу новые сущности. Вот как бы я решил твою задаю с деревом:

PHP:
<? while( Tree($TREE) ): ?>
  <ul>
    <? while( $item=TreeItem() ): ?>
      <li><?=$item['id']?><?=$item['title']?></li>
    <? endwhile ?>
  </ul>
<? endwhile ?>
 

Андрейка

Senior pomidor developer
а можно глянуть как таки выглядит шаблон этого дерева без open/close ? а то блитза нету, на на красоту полюбовацца хочется

С.
я такое вообще в одну строку смогу написать.. тока ты ниче не поймешь.
ЗЫ. как оказываецца много использует while/endwhile
 
Сверху