Народ, скажите, пожалуйста, кто в теме: почему нельзя всю систему построения темплейтов свести к простым действиям вида:
-1. Открываем ХТМЛ шаблон
-2. Составляем массив данных для поиска (например, array('[#ForumName#]', '[#ForumDate#]'))
-3. Составляем массив данных для замены (например, array($ForumName, $ForumDate))
-4. Скармливаем это всё str_replace-у, который проходит по всему HTML куску, и меняет все вхождения шаблонных спец. данных на актуальные.Насколько я понимаю, это может быть не очень гибко (т.к. есть прямая зависимость между шаблоном и движком), но зато весьма эффективно с точки зрения производительности, а за переменными, которые высчитываются всё равно следить надо, чтобы лишний раз сервер не гонять. Или я не прав?
Заранее благодарен,
/Александр.
имхо preg_replace работает в несколько раз быстрее :)
>имхо preg_replace работает в несколько раз быстрее :)Ок, но суть одна и та же?
>>имхо preg_replace работает в несколько раз быстрее :)
>
>Ок, но суть одна и та же?Естественно в основе лежит простая замена ;)
>>>имхо preg_replace работает в несколько раз быстрее :)
>>
>>Ок, но суть одна и та же?
>
>Естественно в основе лежит простая замена ;)Не всё так плохо - это я понимаю =)
Мне просто интересно зачем тогда какие-то ешё навороченные системы кеширования (Smarty)? Что нового можно добавить?
>Не всё так плохо - это я понимаю =)
>Мне просто интересно зачем тогда какие-то ешё навороченные системы кеширования (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.
>Меня тоже давно терзает этот вопрос =)Значит я не одинок =)
>Главное, что я не могу понять, так это почему нельзя обойтись средствапи
>PHP для оформления шаблонов, т.е. идея та же самаяНо обычному пользователю, по-моему, будет вставлять значения вида [#ForumTitle#], [#ForumDate#] чем какие-то конструкции, в которых можно ещё что-то наворотить... Кроме того, если уж совсем далеко смотреть, то такие шаблоны не зависят от языка программирования...
>Но обычному пользователю, по-моему, будет вставлять значения вида [#ForumTitle#], [#ForumDate#] чем какие-то
>конструкции, в которых можно ещё что-то наворотить...А велика ли разница между конструкциями [#ForumTitle#] и <?=ForumTitle?> ?;)
По поводу "наворотить", то верстальщику (допускать "рядового пользователя" к редактированию шаблонов я бы не стал =) ) можно не объяснять всех тонкостей PHP. Ему достаточно знать как вставить значение переменной и как организовать простой цикл. Кроме того, в PHP уже есть механизм вывода ошибок... Так стоит ли пренебрегать уже работающим кодом?
>Кроме того, если уж
>совсем далеко смотреть, то такие шаблоны не зависят от языка программирования...
>С языками программирования тоже можно найти компромисс. Какая разница какой язык шаблонов реализовывать, если это делается с нуля. У PHP есть устоявшийся синтаксис, который можно использовать,исходники парсера PHP открыты для ознакомления (не знаю, правда как Zend отнесется к использованию фрагментов своего кода, но это уже не суть важно)
А по поводу скорости, действительно кроме ИМХО ничего предоставить не могу =), но сдается мне, что парсер PHP работает быстрее, чем парсер, написанный на PHP ;)
>А велика ли разница между конструкциями [#ForumTitle#] и <?=ForumTitle?> ?;)Просто не хотелось бы обычному пользователю (хоть и верстальщику) дать возможность вставлять свой код - я за него не смогу ручаться...
>А по поводу скорости, действительно кроме ИМХО ничего предоставить не могу =),
>но сдается мне, что парсер PHP работает быстрее, чем парсер, написанный
>на PHP ;)Логично, конечно, но всё-таки цифры были бы интереснее...
>имхо preg_replace работает в несколько раз быстрее :)Кстати, а знает ли кто-нибудь - где можно найти нормальное сравнение, а не "имхо"? Просто интересно, может кто уже проводил что подобное?
тема уже обсуждалась http://phpclub.ru/talk/showthread.php?s=&threadid=40632
>тема уже обсуждалась http://phpclub.ru/talk/showthread.php?s=&threadid=40632
>>тема уже обсуждалась http://phpclub.ru/talk/showthread.php?s=&threadid=40632Thanks.