Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
рались до смысла "этого сладкого слова" — шаблонизатора, которое я 
применяю то тут, то там по всему тексту. Возможно, чуть разобравшись в 
прилагае- 
мом исходном коде, а затем и опробовав программу на практике (наверное, перепи- 

сав на свой лад), вы разделите мое убеждение о том, что хороший шаблонизатор 
мо- 
жет сэкономить студии немало лишних часов работы. 
Выше я описал недостатки двухуровневой схемы и показал, как их можно преодолеть 

при помощи трехуровневой модели построения сложных сценариев. Но, если вы пом- 
ните, одна задача так и осталась нерешенной. 
А именно, мы обратили внимание, что даже при использовании трехуровневой схемы 
мы не можем легко менять внешний вид многих страниц сразу — без утомительного 
изменения шаблонов каждой из них. Если вы не забыли, решение с включаемыми 
файлами (в каждом из которых содержится отдельный, общий для всех сценариев 
блок страницы) также нам не подходит, потому что оно лишь слегка меняет поста-

Часть V. Приемы программирования на PHP 430 
новку проблемы редизайна. Даже используя инструкцию include, мы попадем в 
тупик, если захотим изменить положения некоторых блоков на странице. 
В общем, при всех достоинствах трехуровневой модели построения сценария ее 
необ- 
ходимо несколько видоизменить, чтобы добиться хотя бы минимальных удобств. Это 
"видоизменение" я и называю шаблонизатором. 
Термин "шаблонизатор" произошел от слова "шаблон" и не является стандарт- 
ным для технической литературы. В этой книге я применяю его на свой страх и 
риск и в основном из соображений краткости: писать везде (а вам — читать) 
слова "система управления шаблонами" весьма утомительно. 
Сама идея шаблонизатора не является новой в Web-программировании. Скорее даже 
наоборот: существуют десятки систем, построенных по описанным ниже принципам. 
Большинство из них — коммерческие и часто довольно сложны. В то же время мно- 
гие свободно распространяемые системы (во всяком случае, те, с которыми я зна- 
ком, — например, Mason, лебедевский Parser и др.) отличаются одним недостатком: 

синтаксис их языка излишне сложен, а потому отпугивает. Кроме того, часто для 
ос- 
воения этих шаблонизаторов требуются навыки не только дизайнера или HTML- 
верстальщика, но и программиста. Мы же, напомню в очередной раз, стремимся к 
тому, чтобы распределить разработку сценария по возможно большему числу незави- 

симых людей, многие из которых не знакомы с программированием. 
Высказанные только что суждения являются моей личной позицией в вопросе 
шаблонизаторов, а потому, как и все субъективное, они вполне могут несколь- 
ко отличаться от действительности. Читателю предлагается самому их прове- 
рить после того, как он ознакомится с моделью шаблонизатора, предлагаемого 
в этой главе. Нужно заметить, что, конечно, каждая Web-студия считает свою 
собственную версию шаблонизатора самой лучшей в мире. 
Традиционное построение страниц 
Итак, сосредоточим все свое внимание на том, как желательно строить сценарии, 
чтобы максимально упростить проблему редизайна, а вместе с ней — добавление 
новых страниц в карту сервера. Многие программисты ограничиваются тем, что раз- 

бивают свои страницы на 3 логических блока: верхнюю часть (header), центральную 

часть (text) и нижний участок страницы (footer). Каждая из этих составляющих 
хра- 
нится в отдельном файле. Центральный блок (text) является главным: до начала 
рабо- 
ты он загружает из файла общую для всех страниц верхнюю часть, а в конце 
выводит 

Глава 30. Код и шаблон страницы 431 
нижнюю. Вот как примерно выглядит шаблон страницы при такой структуре сцена- 
рия (листинг 30.7): 
Листинг 30.7. Традиционное построение шаблона 
 
 
Здесь идет главный текст страницы, 
возможно, включающий данные, 
сгенерированные интерфейсом Interface.php 
 
Предполагается, что файлы header.htm и footer.htm хранятся в подкаталоге 
/templ корневого каталога сервера и содержат участки страниц, которые должны 
быть выведены до и после основного текста страницы. Если сайт небольшой и в нем 

используется не так уж много различных шаблонов страниц, данное решение являет- 

ся самым простым. В таких ситуациях его применение оправдано. Но нас интересует 

оформление больших и сложных сайтов. Предположим, наш ресурс содержит сотни 
страниц, построенных по описанной схеме. Давайте взглянем на проблему с этой 
по- 
зиции. 
Сложность перестановки блоков 
Первый недостаток увидеть легко: мы не можем ни добавить новый блок в страницу, 

ни изменить положения уже имеющихся. Если мы попытаемся это сделать, потребу- 
ется менять код сотен страниц сайта. 
Необходимо заметить, что в нашем примере вряд ли придется когда-нибудь 
изменять порядок следования блоков, раз мы договорились рассматривать 
проблему с общих позиций, а не с частных. 
"Расщепление" шаблона 
Второй недостаток более очевиден для дизайнера: файлы header.htm и 
footer.htm, хотя и представляют собой логически один шаблон, все же разделены. 
Все мы привыкли к тому, что многие тэги HTML (такие как ,  и т. д.
) 
имеют парные закрывающие
 
<<-[Весь Текст]
Страница: из 287
 <<-