Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Тестирование шаблонизаторов для РНР

15
16 ноября 2007 года
shaelf
2.7K / / 04.05.2005
Вот собсно сабж. Я думаю это положит конец многим спорам.
http://template-bench.iliakantor.ru/
Так же я думаю, что это будет полезно любителям вместо смарти использовать str_replace().
12
16 ноября 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: shaelf

Так же я думаю, что это будет полезно любителям вместо смарти использовать str_replace().


Разница между str_replace и smarty не такая уж и большая. Всего то 31%.

З.Ы. :D все переходим на blitz! :)

15
16 ноября 2007 года
shaelf
2.7K / / 04.05.2005
Да, но смарти удобнее)))
337
16 ноября 2007 года
shine
719 / / 09.06.2006
Умиляет разница в два порядка во времени работы между первым и последним шаблонизатором в списке. :)
15
16 ноября 2007 года
shaelf
2.7K / / 04.05.2005
Только не 2, а 17,8 раз))))
12
16 ноября 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: shaelf
Да, но смарти удобнее)))


Не факт. Нужно будет полюбому этот blitz поюзать.

12
16 ноября 2007 года
alekciy
3.0K / / 13.12.2005
Мдя... он по ходу дела еще даже не документирован.
337
16 ноября 2007 года
shine
719 / / 09.06.2006
Цитата: shaelf
Только не 2, а 17,8 раз))))


Два порядка или 175 раз. (0.039989/0.000228 ~= 175)

337
16 ноября 2007 года
shine
719 / / 09.06.2006
Цитата: alekciy
Мдя... он по ходу дела еще даже не документирован.



Ты про blitz?
http://alexeyrybak.com/blitz/blitz_ru.html

12
16 ноября 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: shine


Спасибо! А то на сорцфорге нифига нету.

27K
16 ноября 2007 года
taj
39 / / 11.11.2007
Ну не стоит смарит хоронить :)
Скорость Blitz конечно впечатляет, но это сишный экстеншен, который на виртуальный сервер не поставишь.
Во вторых существует уже толпы верстальщиков которые разбираются в смарти, и переучиваться врядли захотят
15
16 ноября 2007 года
shaelf
2.7K / / 04.05.2005
А есть большие проекты, где каждая мелочь важна.
15K
17 ноября 2007 года
hel
78 / / 10.11.2007
Цитата: shaelf
Да, но смарти удобнее)))


Посмею поспорить. Блитц тоже удобен. Я всего за час научился им пользоваться. А смарти я еще в глаза не видел даже. :)

Шаблон:
[HTML]{{BEGIN Items}}
<table width="80%">
<tr><td width="90%">{{$name}}</td><td>{{$price}}</td></tr>
<tr><td colspan=2>{{$desc}}</td></tr>
</table>
<br>
{{END}}[/HTML]

Примитивный пример скрипта парсинга:

Код:
...
$res=mysql_query("SELECT `name`,`price`,`desc` FROM items LIMIT 2",$DbConn);
$pos=0;
while($row=mysql_fetch_assoc($res)){
    $Result[$pos]=$row;
    $pos++;
}
$Tpl=new Blitz($TplPath."items.tpl");
$Tpl->set(array("Items", $Result)); // Итерируем блок {{BEGIN Items}}, с указанными параметрами (итераций будет count($Result) раз).
$ParsedTemplate=$Tpl->parse(); // Парсим шаблон.
$Tpl->clean();
echo($ParsedTemplate);
...


Результат:
[HTML]<table width="80%">
<tr><td width="90%">Пила</td><td>$43</td></tr>
<tr><td colspan=2>Пригодится чтобы распилить доску или почесать затылок.</td></tr>
</table>
<br>
<table width="80%">
<tr><td width="90%">Молоток</td><td>$35</td></tr>
<tr><td colspan=2>Пригодится чтобы забить гвоздь или сделать кому-то эротический массаж. ;)</td></tr>
</table>
<br>[/HTML]
337
17 ноября 2007 года
shine
719 / / 09.06.2006
Интересно. А как можно организовать в blitz вложенные циклы? Пример:
Код:
<ul>

{{BEGIN Countries}}
<li>
{{$title}}

{{BEGIN Cities}}
<table width="80%">
 <tr><td width="90%">{{$name}}</td></tr>
</table>
<br/>
{{END}}

</li>
{{END}}

</ul>

То есть банальный вывод списка стран и внутри каждой страны вывод списка городов. Как blitz поймет, что {{$name}} принадлежит объекту(массиву?) Cities а не Countries?
15K
17 ноября 2007 года
hel
78 / / 10.11.2007
Хм, даже не знаю в каких случаях нужны будут сложные циклы. Хотя... всякое возможно и в таком случае это проблема... Самое страшное, что автор модуля так и написал в документации, что поддержки вложенных блоков нет и что не надо из скрипта делать кашу.
Немного непонятна логика автора модуля...
337
17 ноября 2007 года
shine
719 / / 09.06.2006
Цитата: hel
Хм, даже не знаю в каких случаях нужны будут сложные циклы.


Откройте первую страницу этого форума. Вы видите список разделов: HTML, SEO и т.д. Этот список выводится циклом. У некоторых разделов есть подразделы (например у Microsoft .NET Framework) : Windows Forms, NET SDK (Fusion, Unmanaged API...), ASP.NET. Эти подразделы выводятся циклом внутри первого цикла. Вот вам и пример. А таких примеров можно накопать сколько угодно.

Цитата: hel
Немного непонятна логика автора модуля...


Да. Мне тоже.

15
17 ноября 2007 года
shaelf
2.7K / / 04.05.2005
2hel Если ты не будешь выдирать из контекста, то буду благодарен. Речь шла о Smarty vs str_replace(). По поводу blitz. Никто не говорит, что он плох, просто попробуй найди хостинг с ним.
15K
17 ноября 2007 года
hel
78 / / 10.11.2007
Цитата: shaelf
2hel Если ты не будешь выдирать из контекста, то буду благодарен.


Не понятно из какого контекста и что выдирать? Или ты просишь чтобы я не постил код?

Между прочим сейчас прочесывал инет в поисках тестов шаблонизаторов. Интересно то, что в одних тестах смарти выше str_replace(), в других наоборот. Если такая спорная ситуация, почти - нет разницы, то зачем строить велосипед? :) Надо глянуть на смарти на досуге. Чем горбатится и писать собственный шаблонизатор с помощью str_replace().

13K
21 ноября 2007 года
Alex_soldier
102 / / 29.01.2007
У меня возник небольшой вопрос.
А разве шаблонизаторы не основаны на str_replace() ?
Или тема касается исключительно удобства использования?
15
21 ноября 2007 года
shaelf
2.7K / / 04.05.2005
Нет, не все. Например blitz вообще на сях написан. Есть и объектные шаблонизаторы (смотри Zend_View). Есть на xsl.
34K
22 ноября 2007 года
alexeyrybak
1 / / 22.11.2007
>>Интересно. А как можно организовать в blitz вложенные циклы?

по приведенному примеру - можно засетить что-то вроде
'Countries' => array(
array('title' =>'C1', 'Cities' => array(array('name' => 'N1'), ...)
...
)

или цикличеcки делать iterate для контекстов (блоков) /Counries и /Counries/Cities
27K
23 ноября 2007 года
taj
39 / / 11.11.2007
Цитата: Alex_soldier
У меня возник небольшой вопрос.
А разве шаблонизаторы не основаны на str_replace() ?
Или тема касается исключительно удобства использования?



[QUOTE=shaelf;]Нет, не все. Например blitz вообще на сях написан. Есть и объектные шаблонизаторы (смотри Zend_View). Есть на xsl.[/QUOTE]А смарти вообще исполняемый код генерит

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог