Шаблоны 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—2024 Портал Знань.
При використанні матеріалів посилання, для інтернет-ресурсів — гіперпосилання, на Znannya.org обов'язкове.
Зв'язок
|
НТУУ "КПІ" Інженерія програмного забезпечення КПІ Лабораторія СЕТ |
|