Опубликован: 01.03.2005 | Доступ: свободный | Студентов: 33804 / 4463 | Оценка: 4.31 / 4.06 | Длительность: 16:41:00
ISBN: 978-5-9556-0026-0
Лекция 15:

Использование шаблонов в PHP

< Лекция 14 || Лекция 15: 12345678
Метод parse

Синтаксис:

parse (возвращаемая переменная, 
       источники шаблонов)

Метод parse() - самый основной в FastTemplate. Он устанавливает значение возвращаемой переменной равным обработанным шаблонам из указанных источников. Метод может использоваться в трех формах: простой, составной и присоединяющей.

$tpl->parse(MAIN, "main"); 
    // простая форма
$tpl->parse(MAIN, array ("list_f", "main"));
    // составная форма
$tpl->parse(MAIN, ".list_el"); 
    // присоединяющая форма

В простой форме шаблон с псевдонимом "main" загружается (если еще не был загружен), все его переменные подставляются, и результат сохраняется как значение переменной MAIN. Если переменная {MAIN} появится в более поздних шаблонах, то вместо нее будет подставлено значение, полученное в результате обработки шаблона "main". Это позволяет создавать вложенные шаблоны.

Составная форма метода parse() создана для того, чтобы упростить вложение шаблонов друг в друга. Следующие записи эквивалентны:

$tpl->parse(MAIN, "list_f");
$tpl->parse(MAIN, ".main");

это то же самое что и

$tpl->parse(MAIN, array("list_f", "main"));

Когда используется составная форма, важно, чтобы каждый шаблон, идущий в списке после первого, содержал ту переменную, в которую передаются результаты обработки шаблона. В примере выше main должен содержать переменную {MAIN}, поскольку именно в нее передаются результаты обработки шаблона list_f. Если main не содержит переменной {MAIN}, то результаты обработки шаблона list_f будут потеряны.

Присоединяющий стиль позволяет добавлять результаты обработки шаблона к переменной результата. Точка перед псевдонимом файла шаблона говорит FastTemplate о том, что нужно присоединить результат обработки этого шаблона к возвращенным результатам, а не перезаписывать его. Такой стиль наиболее часто используется при построении таблиц с переменным числом рядов, получаемых, например, в результате запроса к базе данных.

Метод FastPrint

Синтаксис:

FastPrint(обработанная переменная)

Метод FastPrint() печатает содержимое переданной в него обработанной переменной. Если он вызван без параметров, то печатается последняя использованная методом parse() переменная.

$tpl->FastPrint(); 
/* если продолжать предыдущий пример,
то эта функция напечатает значение 
переменной MAIN */
$tpl->FastPrint("MAIN"); 
// эта функция сделает то же самое
Пример 15.4. Использование метода FastPrint()

Если нужно печатать не на экран, а, например, в файл, то получить ссылку на данные можно с помощью метода fetch().

$data = $tpl->fetch("MAIN");
fwrite($fd, $data); // запись данных в файл

Решение задачи с помощью шаблонов FastTemplate

Теперь попробуем собрать воедино все изученные методы, чтобы решить нашу задачу.

<?php
include("class.FastTemplate.php3"); //подключаем класс
                                    //шаблонов FastTemplate
$tpl = new FastTemplate("c:/users/nina/tasks/"); //создаем
                                    //объект FastTemplate
//задаем псевдонимы для имен файлов шаблонов
$tpl->define( array( main => "main.tpl",
                 list_f => "list.tpl",
                 list_el=> "list_element.tpl" ));
// Присваиваем переменной TITLE_ значение "List of articles"
$tpl->assign(TITLE_, "List of articles");
/* далее, как и раньше, устанавливаем соединение с базой
и получаем из нее значения нужных элементов */
$conn = mysql_connect("localhost","nina","123")
   or die("Can't connect");
mysql_select_db("book");
$sql = "SELECT * FROM Articles";
$q = mysql_query($sql,$conn);
$num = mysql_num_rows($q);
   for($i=0; $i<$num; $i++){
      $title = mysql_result($q,$i,"title");
      $author = mysql_result($q,$i,"author");
      $abs = mysql_result($q,$i,"abstract");
      $full = mysql_result($q,$i,"fulltext");
// присваиваем полученные значения переменным,
// использованным внутри шаблонов
      $tpl->assign(array(
               TITLE => $title,
               AUTHOR => $author,
               ABSTRACT => $abs,
               FULLTEXT => $full ));
/* подставляем вместо переменных значения в шаблоне list_el и
добавляем полученное к переменной LIST_ELEMENT */
   $tpl->parse(LIST_ELEMENT,".list_el");
}
//подставляем значения в шаблоны list_f и main
$tpl->parse(MAIN, array("list_f","main"));
Header("Content-type: text/plain");
$tpl->FastPrint(); // выводим обработанный шаблон на экран
exit;
?>
Листинг 15.4.1. Решение задачи с помощью шаблонов FastTemplate

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

Этот класс шаблонов появился еще до выхода PHP4 для работы с PHP3. Чтобы протестировать приведенные примеры, нужно скачать библиотеку классов FastTemplate и скопировать этот файл в свою рабочую директорию. Если вы работаете с PHP4, то в файл class.FastTemplate.php3 нужно внести пару изменений, о которых написано в документации, поставляющейся вместе с этой библиотекой.

< Лекция 14 || Лекция 15: 12345678
Дарья Федотова
Дарья Федотова
Сергей Березовский
Сергей Березовский

В рамках проф. переподготовки по программе "Программирование"

Есть курсы, которые я уже прошел. Но войдя в курс я вижу, что они не зачтены (Язык Ассемблера и архитектура ЭВМ, Программирование на С++ для профессионалов). Это как?

Григорий Балин
Григорий Балин
Россия, г. Обнинск
Сергей Истрате
Сергей Истрате
Молдова, Республика, Кишинев, Славянский Университет Молдовы, 2010