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

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

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
)=>$New)+$Book; 

Часть V. Приемы программирования на PHP 420 
// Записать книгу на диск. 
SaveBook(GBook,$Book); 
} 
// Все. Теперь у нас в $Book хранится содержимое книги в формате: 
// array ( 
// время_добавления => array( 
// (или id) name => имя_пользователя, 
// text => текст_пользователя 
// ), 
// . . . 
// ); 
// Вот теперь загружаем шаблон страницы. 
include "gbook.htm"; 
?> 
Как видим, исполняемая часть довольно небольшая и, действительно, занимается 
лишь подготовкой данных для их последующего вывода в шаблоне. Шаблон рассмат- 
ривается этой составляющей как обычный PHP-файл, который она подключает при 
помощи инструкции include. Ясно, что весь код шаблона (хотя его и очень мало) 
выполнится в том же контексте, что и генератор данных, а значит, ему будет 
доступна 
переменная $Book. 
Логически весь код можно разбить на 3 части. Первая из них — задание конфигура- 

ции сценария, в нашем случае она состоит всего лишь в определении одной- 
единственной константы GBook, хранящей имя файла гостевой книги. Во второй час- 

ти, которую можно назвать "прикладным интерфейсом" гостевой книги, содержатся 
описания функций, достаточных для работы с гостевой книгой. Это, конечно, функ- 

ции загрузки и сохранения наполнения книги на диске. Наконец, третья часть 
генера- 
тора данных обрабатывает запросы пользователей на добавление данных в книгу. 
Таким образом, для работы нашего сценария нужны три файла: генератор данных, 
шаблон книги и файл с записями книги. В принципе, это минимум, если только не 
привлекать для хранения записей базу данных (что, безусловно, лучше в больших 
программах). Однако в нашем случае проще как раз работать с файлами, поэтому я 
на них и остановился. 
Обратите внимание: для того чтобы теперь переделать гостевую книгу так, 
чтобы она использовала базу данных, а не файл, достаточно изменить всего 
лишь 2 функции: LoadBook() и SaveBook(). Ни других частей генератора 
данных, ни, тем более, шаблона это не затронет. На самом деле, такой подход 

Глава 30. Код и шаблон страницы 421 
не является случайностью: он очень тесно связан с трехуровневой схемой по- 
строения интерактивных сценариев, о которой мы скоро будем говорить. 
Взаимодействие генератора 
данных и шаблона 
Вернемся опять к тому же генератору данных. В нем мы проверяем, не запущен ли 
сценарий книги в ответ на нажатие кнопки Добавить в форме. Тут я хочу кое-что 
напомнить. Если вызвать программу без параметров, то пользователю будет просто 
выдано содержимое гостевой книги, в противном же случае (то есть при запуске из 

формы) осуществится добавление записи. Таким образом, мы "одним махом убиваем 
двух зайцев": используем один и тот же шаблон для двух разных страниц, внешне 
крайне похожих. Такую практику нужно только приветствовать, не правда ли? Опре- 

деляем мы, нужно ли добавлять запись, по состоянию переменной $doAdd. Помните, 
именно такое имя имеет submit-кнопка в форме? Когда ее нажимают, сценарию по- 
ступает пара "doAdd=Добавить!", чем мы и воспользовались. Итак, если кнопка 
нажата, то мы вставляем запись в начало массива $Book и сохраняем его на диске. 

Обратите внимание, насколько проста операция добавления записи. Так получилось 
вследствие того, что мы предусмотрительно дали полям формы с названием и тек- 
стом имена, соответственно, New[name] и New[text], которые PHP преобразовал в 
массив. Вообще говоря, придумывание таких имен для полей — задача как раз того 
"третьего лица", о котором я говорил выше. Это — работа скорее программистская, 

нежели дизайнерская (хотя, безусловно, от удачного планирования названий имен 
полей зависит не так уж и мало). 
Подчеркиваю, что в самом коде генератора данных gbook.php в принципе не при- 
сутствует никаких данных о внешнем виде нашей гостевой книги. В нем нет ни 
одной 
строчки на HTML. Иными словами, генератору совершенно "все равно", как выгля- 
дит книга. Он занимается лишь ее загрузкой и обработкой. Это значит, что в 
будущем 
для изменения внешнего вида гостевой книги нам не придется править этот код, т. 
е. 
мы добились некоторого желаемого разделения труда дизайнера и программиста. 
С другой стороны, шаблон gbook.htm не делает никаких предположений о том, как 
же именно хранится книга на диске и как она обрабат
 
<<-[Весь Текст]
Страница: из 287
 <<-