ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

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

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Проэктирование. Часть Одиннадцатая.


01-07-2015

В листинге 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, - использование для обозначения замещаемых значений маркеров.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Проэктирование. Часть Десятая. PHP. Проэктирование. Часть Двеннадцатая.