САМОУЧИТЕЛЬ PHP 4



         

Генератор данных


Конечно, это еще далеко не весь сценарий. Вы, наверное, заметили, что сердце шаблона — цикл foreach вывода записей — использует непонятно откуда взявшуюся переменную $Book, по контексту — двумерный массив. Кроме того, при отправке формы тоже ведь нужно предусмотреть некоторые действия (а именно,  добавление записи в книгу).

Мы видим, что где-то должен быть скрыт весь этот код. Он, действительно, располагается в отдельном файле с именем gbook.php. Отличительная черта этого файла — то, что в нем нет никакого намека на то, как нужно форматировать результат работы сценария. Именно поэтому я называю его генератором данных (листинг 30.2).

Листинг 30.2. Генератор данных: gbook.php

<?

define("GBook","gbook.dat"); // имя файла с данными гостевой книги

// Загружает гостевую книгу с диска. Возвращает содержание книги.

function LoadBook($fname)

{  $f=@fopen("gbook.dat","rb"); if(!$f) return array();

   $Book=Unserialize(fread($f,100000)); fclose($f);

   return $Book;

}

// Сохраняет содержимое книги на диске.

function SaveBook($fname,$Book)

{  $f=fopen("gbook.dat","wb");

   fwrite($f,Serialize($Book));

   fclose($f);

}

// Исполняемая часть сценария.

// Сначала — загрузка гостевой книги.

$Book=LoadBook(GBook);

// Обработка формы, если сценарий вызван через нее.

// Если сценарий запущен после нажатия кнопки Добавить...

if(!empty($doAdd)) {

  // Добавить в книгу запись пользователя — она у нас хранится

  // в массиве $New, см. форму в шаблоне. Запись добавляется,

  // как водится, в начало книги.

  $Book=array(time()=>$New)+$Book;

  // Записать книгу на диск.

  SaveBook(GBook,$Book);

}

// Все. Теперь у нас в $Book хранится содержимое книги в формате:

// array (

//   время_добавления => array(

//   (или id) name => имя_пользователя,

//            text => текст_пользователя

//            ),

//   . . .

// );

// Вот теперь загружаем шаблон страницы.




Содержание  Назад  Вперед