Алексей
Если подвести итог
Вот, что мы имеем на пхп:
foreach($data as $row): ?>
]\')" onmousemove="show_Explanatory(\'explanatory_fly\', paste_name)" class="div_help hand">^
Имя:
.html" onclick="infoWindow(this.href); return false;">=$row["user_name"]?>
Комментарий: =$row["user_message"]?>
=$row["date"]?>
endforeach ?>
Страницы: foreach($pages as $i): ?>
if($current_page==$i): ?>
=$i?> else: ?>
.html" class="bold color_1">=$i?> endif ?>
endforeach ?>
Прежде, чем браться за темплейтный движок, подумай: а чем код на этом движке будет лучше, чем тот, который ты видишь здесь.
RomikChef:
Макс, Сергей, вы не хотите высказаться? Жалко...
Ну что вам написать ?
Я довольно долго использовал и шаблонизатор и чистый ПХП, сейчас изучаю XSLT.
ИМХО,
все 3 способа вполне примелемы и отличаются лишь мелочами, которые для кого-то
имеет значение, а для кого-то нет.
Например, я считаю, что в шаблоне должны быть доступны только те данные,
которые разрешил программист (это мое требование, которое никому не навязываю).
То есть если есть шаблон
=$name;?>
то в нем не должны быть доступны переменным типа $db_login (логин доступа к БД).
В ПХП отделить пространство имен можно лишь двумя способами : помещение кода в функцию или класс (обычный include не подойдет).
Далее, мне при отладке удобно, что в шаблоне нет ПХП-кода.
Любые ПХП-ошибки (warning-и, notice-ы) надо искать именно в коде, а не в шаблоне.
Когда используешь шаблонизаторы, то любые ПХП-ошибки в броузер аккуратно выводятся сверху, а потом идет ХТМЛ-код (дизайн).
Но и классически шаблонизаторы меня не устраивают.
Причина, код скрипта кишит всякими :
$tpl->addBlockFile(\'content\', \'cb\', \'tth_list.html\');
if ($amount) {
$tpl->setCurrentBlock(\'row\');
while($list->isValid()) {
$thread= & $list->get();
$tpl->setVariable(array(
\'thread_id\' => $thread->id,
\'message\' => $thread->getMessage(),
\'subject\' => $thread->getSubject(),
));
$tpl->parseCurrentBlock();
$list->next();
}
} else {
$tpl->touchBlock(\'no_row\');
}
$tpl - это объект шаблонизатора.
Очень часто, если убрать всю работу с шаблонами, то скрипты оказываются очень
похожими, почти идентичными (это к вопросу о повторном использовании кода).
Поэтому я склоняюсь к использовнию шаблонизаторов, у которых шаблон имеет логику.
Выбор тут невелик - Smarty/XSLT/чистый PHP (Я склоняюсь к XSLT)
Противники таких шаблонов говорят что в шаблоне не должно быть никакой логики,
что они должны быть как можно более простыми.
1. Начнем с логики.
Логику в приложении можно разделить на 2 части: бизнес-логика (логика обработки данных) и логика представления (логика дизайна).
Так вот, верстальщик ДОЛЖЕН знать о логике представления. И он должен уметь управлять логикой представления.
Все что касается внешнего представления можно доверить верстальщику.
2. По поводу простоты шаблона.
Верстальщик должен быть таким же профи как и программист, только профи в своей области, в верстке.
Иначе пусть ищет другую работу.
Свое мнение не навязываю и не обсуждаю, хотя если есть вопросы - отвечу.
Макс:
Поэтому я склоняюсь к использовнию шаблонизаторов, у которых шаблон имеет логику.
Грубо говоря одна из целей этого решения - упростить свою работу и усложнить жизнь верстальщику :D
На самом деле, многие шутку не поймут.
На самом деле, такой подход развязывает руки верстальщику.
и он не должен бегать за каждым чихом к програмеру.
он имеет набдор данных, оговоренный в ТЗ и располагает так, как ему заблагорассудится
А убить доступ к переменным есть еще один способ - unset :-)
кроме шуток
foreach ($GLOBALS) убиваем все, что не $form_data
RomikChef
мдя... твои аргументы наповал убивают. Соглашусь со всем тобой сказанным, в т.ч. и с идеей, что с функциями шаблонизатора вполне справляется код на пхп, приведённый тобой.
Алексей
я так понял, что тут вопрос самодисциплины.
Но мне кажется, что соблюдать несложные правила синтаксиса, и в массив с данными помещать уже окончательно подготовленные данные - нет проблем.