Обработка файла
После того как файлы и переменные будут зарегистрированы в системе шаблонов, можно переходить к обработке зарегистрированных файлов и замене всех ссылок на переменные с соответствующими значениями. Метод file_parser( ) приведен в листинге 12.4.
Листинг 12.4.
Метод обработки файла
function file_parser($file_id) {
// Сколько переменных зарегистрировано для данного файла?
$varcount = count($this->variables[$file_id]);
// Сколько файлов зарегистрировано?
$keys = array_keys($this->files):
// Если файл $file_id существует в массиве
$this->files
// и с ним связаны зарегистрированные переменные
If ( (in_array($file_id. $keys)) && ($varcount > 0) ) :
// Сбросить $x $x = 0:
// Пока остаются переменные для обработки...
while ($x < sizeof($this->variables[$file_id])) :
// Получить имя очередной переменной $string = $this->variables[$file_id][$x];
// Получить значение переменной. Обратите внимание:
// для получения значения используется конструкция $$.
// Полученное значение подставляется в файл вместо
// указанного имени переменной.GLOBAL $$string:
// Построить точный текст замены вместе с ограничителями
$needle = $this->opening_escape.$string.$this->closing_escape;
// Выполнить замену.
$this->files[$file_id] = str_replace( $needle.
$$string.
$this->files[$file_id]);
// Увеличить $х $x++;
endwhile;
endif;
}
Сначала мы проверяем, присутствует ли указанное имя файла в массиве $this->files. Если файл был зарегистрирован, мы также проверяем, были ли для него зарегистрированы переменные, и если были — значения этих переменных подставляются в содержимое $file_id. Пример:
// Включить класс шаблона include("template. class") ;
$page_title = "Welcome to your homepage!";
$bg_color = "white"; $user_name = "Chef Jacques";
// Создать новый экземпляр класса
$template = new template;
// Зарегистрировать файл "homepage.html",
II
присвоив ему псевдоним "home"
$template->register_file( "home", "homepage.html");
// Зарегистрировать несолько переменных
$template->register_variables("home", "page_titie, bg_color, user_name");
$template->file_parser("home");
Поскольку переменные page_title, bg_color и user_name были зарегистрированы, значения каждой переменной (присвоенные в начале сценария) подставляются в страницу homepage.html, хранящуюся в массиве files (атрибуте объекта-шаблона). На этом предварительная подготовка завершается, остается лишь вывести полученный шаблон в браузере. Эта операция рассматривается в следующем разделе.