Написал шаблонизатор. Два основных отличия -
1. Компиляция шаблона
2. Натив вид кода
Скажите зачем? Ведь есть смарти и другие шаблонизаторы.
Размер смарти: ~900kb и этим не все сказано, дело в том, что функции в шаблонизаторе выполняются через посредников, потому это неудобно, так как нельзя использовать внешнюю функцию в шаблоне.
Вывод содержимого шаблона и регистрация перемнных абсолютно ничем не отличается от смарти, внешне ($Native->assign, $Native->display...).
Smarty-tpl:
<html>
<title>{$title_var}</title>
<body>
Вывод переменной $var - {$var}
Условие - {if ($var)}Текст{/if}
</body>
</html>
Native-tpl:
<html>
<title>{=$title_var}</title>
<body>
Вывод переменной $var - {=$var}
Условие - {if ({$var}):}Текст{endif}
</body>
</html>
Для начала работы с классом, установите настройки в классе, и впишите код где желаете использовать класс -
$Native = new Native;
Более подроьная инструкция:
Перед стартом - установите папку шаблонов и папку для скомпилированных шаблонов.
Далее примерно так:
//Подключаем шаблонизатор
$Native = new Native;
//Регистрируем переменную
$Native->assign('test_var', "Значение тестовой переменной");
//Выводим шаблон
$Native->display('template.tpl');
template.tpl
<html>
<head><title>Тестовый шаблон</title></head>
<body>
{if ({$test_var}):} {=$test_var} {endif}
</body>
</html>
В результате выведет "Значение тестовой переменной" в случае если переменная задана.
<title>{=$title_var}</title>
<body>
Вывод переменной $var - {=$var}
Условие - {if ({$var}):}Текст{endif}
и
<title><?=$title_var ?></title>
<body>
Вывод переменной $var - <?=$var ?>
Условие - <?php if ($var): ?>Текст<?php endif ?>
я выберу второй вариант. И я вообще не понимаю действительно, зачем это? Что бы писать меньше кода? Разница то всего в два три знака.
NURD (16.07.2012/10:51)
<html>
<head><title>Тестовый шаблон</title></head>
<body>
{if ({$test_var}):} {=$test_var} {endif}
</body>
</html>
А так не проще?
<html>
<head><title>Тестовый шаблон</title></head>
<body>
<?php if ($test_var) echo $test_var; ?>
</body>
</html>
Зачем тебе шаблонизатор вообще, если он ничего особого не умеет. Обычный РНР, только больше заморочек. В Смарте хотя-бы одной функцией можно вставить календарь или еще что, а твой шаблонизатор, так проще нативный РНР юзать.
Koenig (16.07.2012/11:33)
а цикл где?
Цикл
{while (true):} Тра ля ля {endwhile}
Вопрос, зачем писать {while}, {$var} и потом обрабатывать все это регулярками, если можно просто написать <? while() ?>, <?=$var ?> ?
~XeOn~ (16.07.2012/11:38)
Вопрос, зачем писать {while}, {$var} и потом обрабатывать все это регулярками, если можно просто написать <? while() ?>, <?=$var ?> ?
Не знаю. Я написал а вы разбирайтесь!
при таком подходе, стоит использовать синтаксис пхп, без своих велосипедов