URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 2216
[ Назад ]

Исходное сообщение
"Template system as just a 'str_replace()'?"

Отправлено Александр , 28-Мрт-04 03:27 
Народ, скажите, пожалуйста, кто в теме: почему нельзя всю систему построения темплейтов свести к простым действиям вида:
-1. Открываем ХТМЛ шаблон
-2. Составляем массив данных для поиска (например, array('[#ForumName#]', '[#ForumDate#]'))
-3. Составляем массив данных для замены (например, array($ForumName, $ForumDate))
-4. Скармливаем это всё str_replace-у, который проходит по всему HTML куску, и меняет все вхождения шаблонных спец. данных на актуальные.

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

Заранее благодарен,
/Александр.


Содержание

Сообщения в этом обсуждении
"Template system as just a 'str_replace()'?"
Отправлено MeLLowD , 29-Мрт-04 17:57 
имхо preg_replace работает в несколько раз быстрее :)

"Template system as just a 'str_replace()'?"
Отправлено Александр , 29-Мрт-04 18:26 
>имхо preg_replace работает в несколько раз быстрее :)

Ок, но суть одна и та же?


"Template system as just a 'str_replace()'?"
Отправлено MeLLowD , 29-Мрт-04 18:59 
>>имхо preg_replace работает в несколько раз быстрее :)
>
>Ок, но суть одна и та же?

Естественно в основе лежит простая замена ;)


"Template system as just a 'str_replace()'?"
Отправлено Александр , 29-Мрт-04 19:07 
>>>имхо preg_replace работает в несколько раз быстрее :)
>>
>>Ок, но суть одна и та же?
>
>Естественно в основе лежит простая замена ;)

Не всё так плохо - это я понимаю =)
Мне просто интересно зачем тогда какие-то ешё навороченные системы кеширования (Smarty)? Что нового можно добавить?


"Template system as just a 'str_replace()'?"
Отправлено zenon , 29-Мрт-04 20:55 
>Не всё так плохо - это я понимаю =)
>Мне просто интересно зачем тогда какие-то ешё навороченные системы кеширования (Smarty)? Что
>нового можно добавить?

Меня тоже давно терзает этот вопрос =)
Главное, что я не могу понять, так это почему нельзя обойтись средствапи PHP для оформления шаблонов, т.е. идея та же самая

1) Составляем массив данных для вывода
$out = array('name'=>'123', 'title'=>'456');

2) В шаблоне в необходимых местах прописываем например так

<b><?=$out['name']?></b>::<?=$out['title']?>

3) Шаблон хранится в отдельном файле ('page.tpl.php')

4) Подключаем шаблон

include('page.tpl.php');

ИМХО такой способ будет работать гораздо быстрее, чем str_replace и preg_replace. Да и функциональность шаблона значительно расширивается -- в нее входят все возможности PHP.


"Template system as just a 'str_replace()'?"
Отправлено Александр , 29-Мрт-04 21:17 
>Меня тоже давно терзает этот вопрос =)

Значит я не одинок =)

>Главное, что я не могу понять, так это почему нельзя обойтись средствапи
>PHP для оформления шаблонов, т.е. идея та же самая

Но обычному пользователю, по-моему, будет вставлять значения вида [#ForumTitle#], [#ForumDate#] чем какие-то конструкции, в которых можно ещё что-то наворотить... Кроме того, если уж совсем далеко смотреть, то такие шаблоны не зависят от языка программирования...


"Template system as just a 'str_replace()'?"
Отправлено zenon , 29-Мрт-04 21:35 
>Но обычному пользователю, по-моему, будет вставлять значения вида [#ForumTitle#], [#ForumDate#] чем какие-то
>конструкции, в которых можно ещё что-то наворотить...

А велика ли разница между конструкциями [#ForumTitle#] и <?=ForumTitle?> ?;)

По поводу "наворотить", то верстальщику (допускать "рядового пользователя" к редактированию шаблонов я бы не стал =) ) можно не объяснять всех тонкостей PHP. Ему достаточно знать как вставить значение переменной и как организовать простой цикл. Кроме того, в PHP уже есть механизм вывода ошибок... Так стоит ли пренебрегать уже работающим кодом?

>Кроме того, если уж
>совсем далеко смотреть, то такие шаблоны не зависят от языка программирования...
>

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

А по поводу скорости, действительно кроме ИМХО ничего предоставить не могу =), но сдается мне, что парсер PHP работает быстрее, чем парсер, написанный на PHP ;)


"Template system as just a 'str_replace()'?"
Отправлено Александр , 29-Мрт-04 21:45 
>А велика ли разница между конструкциями [#ForumTitle#] и <?=ForumTitle?> ?;)

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

>А по поводу скорости, действительно кроме ИМХО ничего предоставить не могу =),
>но сдается мне, что парсер PHP работает быстрее, чем парсер, написанный
>на PHP ;)

Логично, конечно, но всё-таки цифры были бы интереснее...


"Template system as just a 'str_replace()'?"
Отправлено Александр , 29-Мрт-04 21:18 
>имхо preg_replace работает в несколько раз быстрее :)

Кстати, а знает ли кто-нибудь - где можно найти нормальное сравнение, а не "имхо"? Просто интересно, может кто уже проводил что подобное?


"Template system as just a 'str_replace()'?"
Отправлено MeLLowD , 30-Мрт-04 13:38 
тема уже обсуждалась http://phpclub.ru/talk/showthread.php?s=&threadid=40632



"Template system as just a 'str_replace()'?"
Отправлено Александр , 31-Мрт-04 10:02 
>тема уже обсуждалась http://phpclub.ru/talk/showthread.php?s=&threadid=40632



"Template system as just a 'str_replace()'?"
Отправлено Александр , 31-Мрт-04 10:03 
>>тема уже обсуждалась http://phpclub.ru/talk/showthread.php?s=&threadid=40632

Thanks.