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