В листинге 27.3 представлен простейший шаблон. Обратите внимание на маркеры, заключенные в фигурные скобки. В этом шаблоне их три: TITLE, SIDENAV и MAIN. Это фрагмент содержимого, сгенерированного в основном сценарии PHP. Первый является прототипом присвоения переменной, а второй будет содержать другой шаблонный файл. Последний является стандартным именем, используемым проектом FastTemplate для отображения главного содержимого любого сценария. В листингах 27.4-27.6 отображено несколько других шаблонов, используемых в этом примере.
Как можно ожидать, боковая навигация представляет собой простой набор ссылок. Таблица содержит три столбца, предназначенных для числа, квадрата и куба этого числа. Шаблон, сохраненный в файле row.tpl, в дальнейшем определяет строки таблицы. Сценарий PHP, представленный в листинге 27.7, вызывает этот шаблон для отображения строк таблицы.
Листинг 27.4. Боковая навигация
<a href="home.php">Home</a><br>
<a href="about.php">About Us</a><br>
<a href="contact.php">Contact Us</a><br>
Листинг 27.5. Шаблон таблицы
<table border="1">
<tr><th>n</th> <th>n*2</th> <th>n*3</th></tr>
{ROWS}
</table>
Листинг 27.6. Шаблон строки
<tr>
<td>{NUMBER}</td> <td>{SQUARE}</td> <td>{CUBE}</td> </tr>
Листинг 27.7. Сценарий, использующий шаблоны
<?php
//получить класс FastTemplate require_once("class.FastTemplate.php"),-// проиллюстрировать
// использование шаблонов в текущем каталоге $tpl = new FastTemplateC'."),-//задать список использованных шаблонов $tpl->define( array(
"main"=>"27-3.tpl",
"side"=>"27-4.tpl",
"table"=>"27-5.tpl",
"row"=>"27-6.tpl"
)
);
//Задать значение переменной TITLE
$tpl->assign(array("TITLE"=>"FastTemplate Test")); // получить боковую навигацию $tpl->parse("SIDENAV", "side"); // создать строки для таблицы for($n=1; $n <= 10; $n++)
{
//задать значения $tpl->assign( array(
"NUMBER"=>$n,
"SQUARE"=>pow($n,2),
"CUBE"=>pow($n,3)
)
);
//проанализировать шаблон и присоединить их к ROWS $tpl->parse("ROWS",".row");
}
// использовать шаблоны table и main и разместить их в MAIN $tpl->parse("MAIN", array("table","main")); // отправить все содержимое в браузер $tpl->FastPrint("MAIN");
?>
Программный код, представленный в этом примере, отслеживать достаточно легко. Как понятно из всего сказанного, файлы шаблонов должны находиться в подкаталоге. Метод assign задает фиксированное значение одной или нескольких переменных, а метод parse анализирует шаблон. Конечно, до синтаксического анализа шаблона необходимо определить значения маркеров.
Сценарий в этом примере выводит в цикле таблицу с числами. Все строки таблицы добавляются к переменной ROWS путем присвоения значений переменных и анализом шаблона. Заметим, что в вызове parse перед именем шаблона row используется точка. Это дает знать FastTemplate, что вместо замещения необходимо делать дополнение.
Проект FastTemplate также использует другой синтаксис для повторяющихся блоков. Вы обозначаете часть HTML-кода HTML-комментариями, которые должны задаваться в строгой форме. Место для добавления дополнительных пробелов или разбиения комментария на две строки не предусмотрено. Такие блоки называются динамическими блоками.
Проект PHPLib представляет собой хорошую основу для создания Web-приложе-ний. Он включает класс, использующий шаблоны, во многом аналогичные шаблонам проекта FastTemplate. Для того чтобы получить класс шаблона, необходимо загрузить весь пакет, но он может использоваться и сам по себе. Подобно FastTemplate, класс шаблонов PHPLib для выделения маркеров использует фигурные скобки, а также позволяет использовать повторяющиеся блоки с использованием синтаксиса комментариев HTML. Не принимая во внимание различие в именах методов, этот класс работает аналогично проекту FastTemplate.
Два других подобных решения - AvantTemplate и TemplatePower. В этих классах используется тот же подход к созданию шаблонов, который применялся в проекте FastTemplate, - использование для обозначения замещаемых значений маркеров.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Проэктирование. Часть Одиннадцатая.
01-07-2015
<< Предыдущая статья | Следующая статья >> |
PHP. Проэктирование. Часть Десятая. | PHP. Проэктирование. Часть Двеннадцатая. |