читать кашу из пхп и хтмл вперемешку удовольствия мало
Ещё раз - это НЕ КАША. Каша это вот:
PHP:
<HTML><BODY>
<h2>Последние новости:</h2>
<?
$f=fopen("news.txt","r");
for(my $i=1; !eof($f) && $i<=5; $i++) {
print "<li>$i-я новость: ".fgets($f,1000);
}
?>
</BODY></HTML>
Если мы используем PHP в HTML, это не значит, что мы там делаем КАШУ. Никакой каши там нет. Есть логика представления, которая реализуется самим PHP, а не псевдоязыком типа Smarty.
Задача любого шаблонизатора - повышение читабельности
повышение читабельности, ровно как и сюсюканьем с верстальщиком к шаблонизации никакого отношения не имеет. Задача шаблонизатора - отделять код программы от кода представления. От логики представления, от которой многие ошибочно пытаются избавиться.
Отделять программу от представления нужно не только для удобства чтения и качества командной разработки, но и теоретически для того, что бы данные, полученные в результате вычислений, можно было отдать в любое представление - хоть в WAP, хоть в HTML, хоть в xHTML, хоть через GD обработать и вывести в виде картинки.
Я постоянно привожу примеры одного и того же кода, элементарного кода, который реально встречается на практике. Задача черезвычайно простая:
Дан массив из двух элементов - имя пользователя и его тип. Тип - булев флаг. Если он в истине, то это - админ - его имя нужно представить в шаблоне красным цветом и болдом. Иначе - черным, стандартным. Задачу необходимо решить с помощью шаблонизатора, не используя HTML в PHP.
C помощью php-native это решается так:
PHP:
<?
// получили данные в скрипте
$data = get_data();
?>
<!-- далее шаблон: -->
<? if($data['is_admin']): ?>
<span style="color:red"><b><?=$data['username']?></b></span>
<? else: ?>
<span><?=$data['username']?></span>
<? endif; ?>
5 строчек кода. Это - php-native.
Внимание, вопрос - как реализовать подобную шаблонизацию с помощью самописного шаблонизатора
Nelius-а?