Привет, Гость!
home login register
[+] Купить Рекламу
Хостинг для тебя! Заходи не пожалеешь
Что мы делаем полезного на официальном сайте WAP-поддержки? Подробно ...
Вступайте в нашу группу ВКОНТАКТЕ
Поздравляем, новичка с ID:1000
Как самомусделать QR-код
IT новости: в Windows новая опасная уязвимость
Проблемы восприятия IT
Как подтвердить авторство в Google

Учебник PHP #12
<< 1 2 3 4 ... 6 >>
завершена, закрыть его.

fclose($fh);

}

Параметр $file_id содержит идентификатор — «псевдоним» для последующих операций с файлом, упрощающий последующие вызовы метода. Идентификатор используется в качестве ключа для индексирования массива $files. Пример регистрации файла:

// Включить класс шаблона

include("tempiate.class"):

// Создать новый экземпляр класса

$template = new template:

// Зарегистрировать файл "homepage.html",

// присвоив ему псевдоним "home"

$template->register_file("home", "homepage.html");

Регистрация переменных

После регистрации файлов необходимо зарегистрировать все переменные, которые будут интерпретироваться особым образом. Метод register_variables( ) (листинг 12.3) работает по тому же принципу, что и register_file( ), — он читает имена переменных и сохраняет их в массиве $variables.

Листинг 12.3. Метод регистрации переменнных

function register_vanables($file_id, $variable_name) {

// Попытаться создать массив,

// содержащий переданные имена переменных

$input_variables - explode(".", $variable_name);

// Перебрать имена переменных

while (Iist($value) = each($input_variables)) :

// Присвоить значение очередному элементу массива

$this->variables $this->variables[$file_id][] = $value:

endwhile;

}

В параметре $file_id передается ранее присвоенный псевдоним файла. Например, в предыдущем примере файлу homepage.html был присвоен псевдоним home. Обратите внимание — при регистрации имен переменных, которые должны особым образом обрабатываться в файле homepage.html, вы должны ссылаться на файл по псевдониму! В параметре $variable_name передаются имена одной или нескольких переменных, регистрируемых для указанного псевдонима. Пример:

// Включить класс шаблона include("tempiate.class");

// Создать новый экземпляр класса $template = new template;

// Зарегистрировать файл "homepage.html",

// присвоив ему псевдоним "home" $template->register_file("home", "homepage.html");

// Зарегистрировать несколько переменных

$template->register_variablest"home", "page_title.bg_color,user_name");

Обработка файла

После того как файлы и переменные будут зарегистрированы в системе шаблонов, можно переходить к обработке зарегистрированных файлов и замене всех ссылок на переменные с соответствующими значениями. Метод 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 (атрибуте объекта-шаблона). На этом предварительная подготовка завершается, остается лишь вывести полученный шаблон в браузере. Эта операция рассматривается в следующем разделе.

Вывод файла

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

файла создается отдельный метод, приведенный в листинге 12.5, однако в зависимости от ситуации вывод также может интегрироваться с методом f i I e_parser().

Листинг 12.5. Метод вывода файла в браузере

function pnnt_file($file_id) {

// Вывести содержимое файла с идентификатором

$file_id print $this->files[$file id];

}

Все очень просто — при вызове print_file( ) содержимое файла, представленного ключом $file_id, передается в браузер.

В листинге 12.6 приведен пример использования класса template.

Листинг 12.6. Пример использования класса template

// Включить класс шаблона, include("tempiate.class");

// Присвоить значения переменным

$page_title = "Welcome to your homepage!";

$bg_color = "white"; $user_name = "Chef Jacques":

// Создать новый экземпляр класса $template= new template;

// Зарегистрировать файл "homepage.html" с псевдонимом "home"

$template->register_file("home", "homepage.html");

// Зарегистрировать переменные

$template->register_variables("home", "page_title, bg_color.user_name");

$template->file_parser("home");

// Передать результат в браузер

$template->print_file("home");

Если бы шаблон, приведенный в листинге 12.1, хранился в файле homepage.html в одном каталоге со сценарием из листинга 12.6, то в браузер был бы направлен следующий код HTML:

<html>

<head>

<title>:::::Welcome to your homepage!:::::</title>

</head>

<body bgcolor=white>

Welcome to your default home page, Chef Jacques!<br>

You have 5 MB and 3 email addresses at your disposal.<br>

Have fun!

</body>

</html>

Как видно из приведенного примера, все зарегистрированные переменные были заменены соответствующими значениями. При всей своей простоте класс tempi ate

обеспечивает стопроцентное разделение уровней программирования и дизайна. Полный код класса template приведен в листинге 12.7.

Листинг 12.7. Полный код класса template

class template {

VAR $files = array( );

VAR $variables = array( );

VAR $opening_escape = '{';

VAR $closing_escape = '}' ;

// Функция: register_file( )

// Назначение: сохранение в массиве
Комментарии (0)
<< 1 2 3 4 ... 6 >>
Скачать Java книгу

»php/mysql/pdo/js
В библиотеку

На главную

Сообщество wap разработчиков I HwapCMS официальный сайт поддержки


RSS-лента
Генерация: 0.0064 сек.