формирование шаблонов

Gas

может по одной?
формирование шаблонов

так-как коды и дизайн держать вместе (в одном файле) не совсем удобно,
хотелось бы знать как лучше делать шаблоны html страниц
(без использования fasttemplates и подобного), а то в шаблоне ставить <? echo $var1; ?> - вроде не очень красиво.

Видел типа: в странице динамическая часть помечается ##var1##, а потом этот шаблон загружается и str_replace'ом ##var1## заменяется на то шо нада,
но у меня есть сомнения в плане быстодествия.

Посоветуйте какие еще есть варианы.
 

Crazy

Developer
Если есть сомнения в быстродействии, то никто не мешает конвертировать свои шаблоны в PHP'шный код и его просто инклудить. Некоторые шаблонные энжины так и работают.
 

tony2001

TeaM PHPClub
"Если есть сомнения в быстродействии, то никто не мешает"....то никто не мешает протестить и сомнения эти опровергнуть.
 

Jin 2

Guest
не замена ##var1## на переменную на лету
дело совсем не быстрое,
лучше заменять это на <?=var1?>
и сохранять такой компилированный шаблон
если лень писать движок то DTE вполне подойдет
 

Crazy

Developer
Полезность этого спорна и, как отмечено выше, требует тестирования.

Ибо получив экономию времени на простом парсинге и извлечении макросов мы заставляем интерпретатор PHP проводить куда более сложный парсинг скрипта.
 

Jin 2

Guest
ну почему же
проверка на наличие откомпилированного шаблона
или изменения
создание его
загрузка
или просто загрузка.

причем второе гораздо чаще так как шаблон редактируется очень редко.
 

tony2001

TeaM PHPClub
>не замена ##var1## на переменную на лету
>дело совсем не быстрое,
Я ЭТО ТЕСТИЛ.
1000 переменных парсится за десятые доли секунды.
а ТЫ это тестил ?
 

tony2001

TeaM PHPClub
ты ман почитай как-нить, ок ?
рассказываю:
str_replace принимает в качестве двух параметров массивы.
попробуй как-нить это поюзать.
и код пооптимизировать.

>отставание просто неприличное.
от чего ?
неприличное - это очень маленькое или очень большое ?
 

Jin 2

Guest
большое, очень большое

а вот про массивы в str_replace это нужно посмотреть
 

Crazy

Developer
При каждом include будет проводиться парсинг PHP-кода.

Так что баланс плюсов и минусов вовсе не очевиден.
 

crow

Guest
вот такой механизм используем мы:
PHP:
/* тут могла быть ссылка на код, а не кило кода. все равно его никто читать не будет. */
пример использования данного механизма:


PHP:
$Data = array('Name'=>'some name','Email'=>'some@emails');
ShowTemplate(LoadTemplate('mytemplate.html'),$Data);
таким же образом реализовываются вложеные шаблоны:
для таблиц из базы:
темлейт tablebody.html содержащий:

<table>
<tr><td>TITLE1</td><td>TITLE2</td><td>TITLE3</td></tr>
{ROWS}
</table>

темплейт tablerow.html:

<tr><td>{VALUE1}</td><td>{VALUE2}</td><td>{VALUE3}</td></tr>

схема такая, сперва в цикле формируем переменную ROWS:
PHP:
$tablebodytemplate = LoadTemplate('tablebody.html'),
$rowtemplate = LoadTemplate('tablerow.html'),
while($vars=mysql_fetch_array($SQLres))
 $rows .= DoTemplate($rowtemplate,$vars);
ShowTemplate($tablebodytemplate,array('ROWS'=>$rows));
удачи!
 

tony2001

TeaM PHPClub
>А как именно ты используешь str_replace в этом случае?
мы уже когда-то флеймили на эту тему =)
у шаблона есть список переменных, при парсинге этот список просто заменяется на значения, т.е. %var% => value.
все просто и знакомо.
 

tony2001

TeaM PHPClub
Jin 2:
>он один на страницу
имхо ты плохо себе представляешь этот "один".
 

Crazy

Developer
Читаем код:
PHP:
$template = str_replace('{'.$prefix.$key.'}', stripslashes($item), $template);
Многопроходная замена (все это вложена в foreach), а следовательно -- много лишних строковых операций.

Навскидку приходит в голову preg_replace_callback() -- так можно обработать шаблон за один проход.
 
Сверху