- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
// Функция подключения файлов шаблонов -----------------------------------------------------------------
function tpl_include($filepath, $title = '', $content = '') {
global $lang, $lang_array;
$tpl_body = str_replace("\n", '', file_get_contents($filepath));
$tpl_body = preg_replace('#\{loop (.*?)\}(.*?)\{\/loop\}#i', "\nEOL;\nforeach (\\1 as \$var=>\$val) echo <<<EOL\n\\2\nEOL;\necho <<<EOL\n", $tpl_body);
$tpl_body = preg_replace('#\{const (.*?)\}#i', "\nEOL;\necho \\1;\necho <<<EOL\n", $tpl_body);
$to_eval = "echo <<<EOL\n".$tpl_body."\nEOL;\n";
eval($to_eval);
}
// -----------------------------------------------------------------------------------------------------
По следам http://govnokod.ru/5658.
Шаблонизатор этот жив и кочует из проекта в проект.
Можно ссылаться на переменные из массива $lang, где хранится локализация и на $title и $content. Вот так - {$title}.
Можно ссылаться на любые константы. Например, {const ROOT_PATH}.
Можно делать цикл {loop $array}{/loop}, где внутри доступны переменные {$var} и {$val}.
Полностью избавляет от шорт-тегов, которые скоро уже и уберут из похапе.
Работает лишь чуть медленнее include с шорт-тегами (0.8 против 1.2 на 10к прогонов) и, разумеется, быстрее Смарти.
При необходимости в каком-то проекте в чем-то еще - можно легко добавить.
В общем - изящное вонючее решение.
rO_ot 23.06.2011 23:35 # 0
Смарти медленное только первый раз, второй и раз и далее он берет сгенеренные темплейты на чистом пхп, и работает соответственно быстро.
7ion 23.06.2011 23:52 # 0
Разница все равно невелика.
rO_ot 24.06.2011 10:27 # 0
sectus 24.06.2011 03:28 # +2
Кто сказал, что уберут?
7ion 24.06.2011 11:32 # 0
Еще с 2008 года об этом говорят.
Но правда так никто и не знает, уберут ли.
bugmenot 24.06.2011 11:41 # 0
7ion 24.06.2011 12:24 # 0
Тогда из мануала:
>Следует избегать использования коротких тегов при разработке приложений или библиотек, предназначенных для распространения или размещения на PHP-серверах, не находящихся под вашим контролем, так как короткие теги могут не поддерживаться на целевом сервере. Для создания переносимого, совместимого кода, не используйте короткие теги.
guest 24.06.2011 13:43 # 0
Разруха начинается в головах, проблема(ы) PHP - в его архитектуре, точнее, в отсутствии оной.
guest 26.06.2011 22:43 # 0
Lure Of Chaos 24.06.2011 17:07 # 0
guest8 12.04.2019 14:25 # −999