Шаблонизатор - имхо, это не то, что стоит писать самому с нуля.
Но вообще, желание делать что-либо самому и разбираться - как минимум, похвально) Плюсц.
А я наоборот считаю, что шаблонизатор стоит писать с нуля, при этом на чистом коде. По сути, шаблонизатор нам нужен только для того, чтобы отделить логику от презентации. А процедурная презентация гораздо гибче, быстрее и удобнее, чем всякие смарти.
Есть облегченная версия Смарти. Называется TemplateLite, если я не ошибаюсь. Весит в несколько раз меньше. По утверждению разработчиков и грузится несколько быстрее.
там фотокамера чтоб денежки сдирать... по крайней мере в прежние времена :)
Сейчас есть телефоны с довольно хорошими камерами. Удобно понимаете в какой-то момент быстро сфотать что-то :)
Сначала шутка: автор перепиши Си++
Потом притча: если автор "Вообще писать особо не умею, обычно выходит только код" - пользуйтесь тем, что уже написано и используется тысячами (аналогия с Open Source), после того как реально поймете все + и - таких подходов изобретайте велосипед
Скажите, зачем писать PHP на PHP? :)
Нет, я не против использования шаблонизаторов, но важно помнить, что цель их - отделение представления от кода. И это совсем не предполагает наличие условных подстановок, имхо.
В конце концов, можно не извращаться, а написать абсолютно то же на чистом РНР и инклюдить в код. Верстальщику (если таковой предполагается в проекте) не будет большой разницы между "<?", "[*" и "{"
Всё то же самое можно сделать на "голом" РНР вообще без шаблонизатора. И будет оно ничуть не менее наглядно, нежели смарти-код. Имея HTML, JS, PHP & SQL вводить ещё один разметочно-программинговый язык странно. В смысле сопровождения :) Всё-таки чистый РНР более массовый, нежели разметка Smarty.
ну ваше решение для маленьких, чаще всего сопровождаемых 1-2 человеками проекте. А если вы кардинально меняете дизайн...тогда вы понимаете как важно отделить код от представления
Я понимаю, как важно отделить код от представления и совершенно не понимаю, чем не угодил чистый РНР :)
<?php
include('config.inc');
include('mysql.inc');
include($config['module_dir'].'/'.$current['module_filename']);
include($config['design_dir'].'/'.$current['design'].'/view.php');
?>
а в view.php будет что-то вроде этого
<html>
<head>
<title><?=$current['title']; ?></title>
</head>
<body>
<h1><?=$current['title']; ?></h1>
<div><?=$current['content']; ?></div>
</body>
</html>
Очень упрощённо, чисто для иллюстрации.
Мне кажется своими include-ами вы и разделяете (если это так можно назвать) представление от данных.
Не вижу никакого отличия от выполнения операций подготовке вами данных в файлах module_filename от операции assign какого-нибудь шаблонного движк или от вашего include 'view.php' от вызова draw
Шаблонизатор на php