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

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

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

торого можно ссылаться на этот текст. Мы уже видели, как это происходит в про- 
стейшем случае (см. листинг 30.10). Функция шаблонизатора Blk() возвращает 
текст (или содержимое, или тело) блока, имя которого указанно в ее параметрах. 
Содержимое блока может быть задано многократно, при этом последующее опреде- 
ление "затирает" текст предыдущего. Чуть ниже мы увидим, насколько данное каче- 

ство оказывается полезным на практике. 
Как же определять новые блоки в файле страницы? Для этого существует конструк- 
ция . Пример ее использования приведен в листинге 30.11. 
Листинг 30.11. Файл данных страницы: /phil/index.html 

Часть V. Приемы программирования на PHP 436 
 
 
Конфликт индуцирует смысл жизни. Объект деятельности, пренебрегая 
деталями, методологически рефлектирует себя через постсовременный 
класс эквивалентности, открывая новые горизонты. Закон внешнего мира 
может быть получен из опыта. 
 
Философия, конечно, порождена временем. Информация, как следует из 
вышесказанного, непредвзято подчеркивает принцип восприятия, отрицая 
очевидное. 
Из листинга 30.11 следует, что мы можем задавать содержимое блока двумя разными 

способами. Самый простой — указать текст непосредственно вторым параметром 
функции Block(), как это сделано для блока Title. Второй способ незаменим для 
блоков, тела которых состоят из большого количества строк. А именно, мы можем 
опустить второй параметр функции Block(), в этом случае весь текст, который 
рас- 
положен до начала следующего блока либо до конца файла, будет восприниматься 
как тело. Я буду называть такие блоки многострочными. Особенностью многостроч- 
ных блоков в том шаблонизаторе, который мы с вами сейчас напишем, является то, 
что из их содержимого удаляются начальные и концевые пробельные символы, в том 
числе символы перевода строки. В результате та пустая строка, которая 
присутствует 
в листинге, не попадет в шаблон — она будет удалена. 
Текст, не принадлежащий ни одному из блоков, игнорируется. Например, мы 
могли бы написать какие-нибудь комментарии сразу после первой строки лис- 
тинга 30.11, и они были бы пропущены. 
Наверное, вы уже догадались, как мы будем задавать имя шаблона для той или иной 

страницы. Название шаблона — не что иное, как содержимое блока Template, кото- 
рый воспринимается шаблонизатором как специальный. Но, конечно, мы не собира- 
емся определять этот блок в каждой странице — иначе чем этот способ лучше ис- 
пользования участков header и footer? Посмотрим, что предлагает нам 
шаблонизатор. 
Наследование блоков 
Наверное, вы думаете, что страница /phil/index.html, которая генерируется лис- 
тингом 30.11, состоит только из трех блоков — Title, Text и Cite. Это не так. 
Страница, без сомнения, вк
 
<<-[Весь Текст]
Страница: из 287
 <<-