<html>
<title>[TITLE]</title>
<body>
[TEXT]
</body>
<html>
Там, где стоит [TITLE], движок выводит заголовок, там, где [TEXT] — соответственно, текст.
Легко и просто. И все счастливы. И это правильно. Но! Тут и начинается маразм. Сначала пишется «движок шаблонов», что-то вроде такого:
$page = str_replace ("[TITLE]", $title, $page);
$page = str_replace ("[TEXT]", $text, $page);
Дальше — больше. Оказывается, что в некоторых случаях этого мало. Нужно больше функций! Например, нам нужно проверять: если [TEXT] пустой, то выводить одно, если не пустой, то выводить другое, то есть, фактически, вводить уже минимальную логику отображения. И мы пишем наророченый язык шаблонов. А теперь потрясем мозгами и хорошенько подумаем, что же у нас получилось. У нас получился фактически язык программирования, написанный на PHP, который можно встраивать в html-код и тем самым менять логику его (html-кода) отображения.
Поздравим друг друга. У нас получился PHP, написанный на PHP. Велосипед для велосипеда. Осмысление этого придет позже.
А теперь возвращаемся к первому примеру. Сравним его с примером ниже и попробуем найти кардинальные различия.
<html>
<title><?=$title?></title>
<body>
<?=$text?>
</body>
<html>
Чем он кардинально отличается? Ни чем. Вместе с тем, это — не что иное, как сокращенная запись оператора echo. И никакого интерпретатора шаблонов не нужно.
То есть следующий пример php-страницы выведет все, как надо:
<?
$text = "Это текст";
$title = "Это заголовок";
?>
<html>
<title><?=$title?></title>
<body>
<?=$text?>
</body>
<html>
Дальше — больше. Выносим все шаблоны в отдельный файл. И пишем просто:
<?
$text = "Это текст";
$title = "Это заголовок";
include "template.html";
?>
Идея понятна? В процессе исполнения php-скрипта нужные части выкладываем в переменные. Потом — инклюдим html-файл, где в нужных местах проставлено отображение данных.
<html><title><?=strtoupper($title)?></title>
<body>
<? if ($text==""): ?>
Текста нет, пусто.
<? else: ?>
Введеный текст: <b><?=$text;?></b>
<? endif; ?>
</body>
</html>