|
Шаблоны FastTemplate
ADO в Delphi AJAX Android C++ CakePHP CMS COM CSS Delphi Flash Flex HTML Internet Java JavaScript MySQL PHP RIA SCORM Silverlight SQL UML XML Бази даних Веб-розробка Генетичні алгоритми ГІС Гітара Дизайн Економіка Інтелектуальні СДН Колір Масаж Математика Медицина Музика Нечітка логіка ООП Патерни Подання знань Розкрутка сайту, SEO САПР Сесії в PHP Системне програмування Системний аналіз Тестологія Тестування ПЗ Фреймворки Штучний інтелект
|
Шаблоны FastTemplate
Ключові поняття: Метод define, Метод assign, Метод parse, Составная форма метода parse(), Метод FastPrint, метод fetch().
Шаблоны FastTemplateFastTemplate - это набор классов, позволяющих реализовать работу с шаблонами. Логику добавить в шаблон FastTemplate нельзя, вся она должна находиться в коде программы. Идея работы шаблонов FastTemplate заключается в том, что любая большая страница состоит из множества кусочков, самые маленькие из которых - обычные строки текста, и они получают имя и значение. Что представляет собой файл шаблона FastTemplate? Это обычный html-файл, в котором могут встречаться переменные особого вида, впоследствии обрабатываемые методами класса FastTemplate. Синтаксис переменных в шаблонах FastTemplate описывается следующим выражением: {([A-Z0-9_]+)} Это значит, что переменная должна начинаться с фигурной скобки "{". Второй и последующие символы должны быть буквами верхнего регистра от A до Z, цифрами или символами подчеркивания. Переменная вычисляется с помощью закрывающей фигурной скобки "}". {TITLE}
{AUTH20}
{TOP_OF_PAGE}
Пример 15.1. Вычисление
переменной с помощью закрывающей фигурной скобки "}"Как уже было сказано, основная идея FastTemplate - создание страницы с помощью вложенных шаблонов. Например, для решения нашей задачи можно создать три файла шаблона:
Шаблоны мы создали - работу дизайнера выполнили. Теперь нужно научиться их обрабатывать, т.е. выполнить работу программиста. Сейчас создадим программу для обработки приведенных выше шаблонов. Перед началом работы с шаблонами FastTemplate нужно подключить этот набор классов к нашей программе. В реальной жизни набор классов FastTemplate записан в один файл, как правило, с названием class.FastTemplate.php3, поэтому подключить его можно, например, с помощью команды: include("class.FastTemplate.php3");
Следующий важный шаг - это создание объекта класса FastTemplate, с которым впоследствии мы будем работать: $tpl = new FastTemplate(
"/path/to/templates");
В качестве параметра передается путь к месту, где находятся наши шаблоны. Методы FastTemplateДалее необходимо изучить методы, которые можно применять к созданному объекту класса FastTemplate. Параллельно обратим внимание, как их можно использовать для решения нашей задачи. Для работы с FastTemplate нужно знать четыре основных метода: define, assign, parse и FastPrint. Метод defineСинтаксис: define( array ( ключ => значение,
ключ1 => значение1, ... ))
Метод define() связывает имя файла шаблона с более коротким именем, которое можно будет использовать в программе. То есть "ключ" - это имя, которое мы будем использовать в программе для ссылки на файл шаблона, имя которого записано в строке "значение". Реальные имена файлов шаблонов не рекомендуется использовать нигде, кроме метода define. При вызове метода define() происходит загрузка всех определенных в нем шаблонов. $tpl->define( array (main => "main.tpl",
list_f => "list.tpl",
list_el=> "list_element.tpl" ));
Пример 15.2. Использование
метода define()Здесь мы задаем псевдонимы именам файлов шаблонов. Эти псевдонимы, т.е. переменные main, list_f и list_el, будут использоваться в программе вместо соответствующих имен файлов main.tpl, list.tpl и list_element.tpl. Метод assignСинтаксис: assign( (пары ключ/значение) или
( array(пары ключ/значение) )
Метод assign() присваивает переменным значения, "ключ" - это имя переменной, а "значение" - значение, которое ей нужно присвоить. Чтобы переменная в шаблоне была заменена значением, это значение нужно задать ей с помощью метода assign(). Согласно синтаксису этот метод можно использовать в двух различных формах. В FastTemplate есть только один массив, поэтому, если вы повторно задаете значение одному и тому же ключу, оно будет перезаписано. $tpl->assign(array(
TITLE => "Установка и настройка ПО",
TITLE => "Введение в PHP" ));
Пример 15.3. Использование
метода assign()Здесь мы дважды устанавливаем значение переменной, доступной в файлах шаблона по имени TITLE. Эта переменная будет иметь последнее присвоенное ей значение, т.е. она равна строке "Введение в PHP". Метод 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Теперь попробуем собрать воедино все изученные методы, чтобы решить нашу задачу. 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("Cant 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 нужно внести пару изменений, о которых написано в документации, поставляющейся вместе с этой библиотекой.
Зверніть увагу на додаткові посиланняЯкщо вас цікавить...Головний розділСторінки, близькі за змістомзагрузка...
|
Теми розділу
Сторінки, близькі за змістом устанавливает значение возвращаемой переменной равным обработанным шаблонам из указанных источников. |
|
Copyright © 2008—2026 Портал Знань.
При використанні матеріалів посилання, для інтернет-ресурсів — гіперпосилання, на Znannya.org обов'язкове.
Зв'язок
|
НТУУ "КПІ" Інженерія програмного забезпечення КПІ Лабораторія СЕТ |
|