Вы здесь:
Рефераты и курсовые по IT
Использование шаблонов в PHP-4
Многие программеры сталкивались с проблемой, когда дизайнеру "нужна свобода" в написании html, а программеру "чистота" кода :) У меня такое приключилось при написании виртуального веб-магазина. В общем, недолго думая я стал искать различные PHP-классы для создания "динамических сайтов" с использованием так называемых шаблонов. И нашел один, который отвечал всем моим требованиям, но слишком уж он оказался "большим и тяжелым". Называется этот класс FastTemplate (уж не помню, где я его скачал). Недолго думая, я решил написать свой класс, взяв за основу функциональность FastTemplate. Мои результаты в написании своего класса получились практически такими как у FastTemplate, но, как мне кажется, ни чуть не хуже (прим.: код я не копировал, а создавал сам с нуля).
Итак, для начала работы Вам необходимо скачать мой класс template.
Скачали? Теперь можно пробовать на простом примере. Сделаем пример листинга файлов текущего каталога с подсчетом кол-ва байт каждого файла, при этом динамически создав таблицу. Итак, создайте следующие файлы:
main.htm
Localtime is
| File listing | |
rows.htm
index.php
require ('templates.php'); // Включаем класс для работы с шаблонами
// Определяем теги
$meta = array( "ABOUT" => ":: template class example ::",
"LOCALTIME" => date("M-d-Y H:i:s"));
$t = new template;
// Инициализируем файлы и дескрипторы
$t->init(array( index => "main.htm", rows => "rows.htm"));
// Устанавливаем ограничители (delimiter-ы)
$t->delimiters("");
// Определяем теги
$t->assign($meta);
$d = dir(".");
$colors = array("#d4d4d4", "#a0a0a0"); $i = 0;
$totalbytes = 0;
while ($entry = $d->read()) {
if (preg_match("/^(.|..)$/", $entry)) continue;
$color = $colors[$i];
$t->assign("FILENAME", $entry); // Определяем под тегом FILNAME имя файла
$t->assign("COLOR", $color); // под COLOR текущий цвет
$t->assign("PWD", realpath ($entry)); // Полный путь
if (($size = filesize($entry)) > 1024) {
$totalbytes += $size;
$size = sprintf("%0.2f Kbytes", ($size / 1024));
} else {
$totalbytes += $size;
$size .= " bytes";
}
$t->assign("FILESIZE", $size); // связываем с тегом FILESIZE длинну файла
// Обрабатываем файл с дескриптором rows, при этом полученные результаты
// закрепляем под тегом TABLE_CONTENT (путем добавления)
$t->parseit(rows, "TABLE_CONTENT");
$i = (++$i >= count($colors)) ? 0 : $i;
// Под этим тегом у нас будет общее кол-во байт найденых файлов
$t->assign("TOTAL", ( ($totalbytes > 1024) ? sprintf("%0.2f Kbytes", ($totalbytes / 1024)) : $totalbytes." bytes"));
}
$d->close();
// Обрабатываем страницу с дескриптором index. Т.е. при обработке
// все попадающиеся теги будут заменены на определенное значение.
$t->parseit(index);
// Выводим все
$t->printit();
$t->freshall();
?>
Результаты выполнения можно увидеть здесь http://null.magelan.ru/php/templates Данный класс работает очень шустро, обработчик построен на основе регулярных выражений.
Детальное описание
В классе определенны массивы:
$filelist - ассоциативный массив дексрипторов и файлов
$assign - ассоциативный массив определенных тегов
$root - корневой каталог
$arr - массив с результатом
$delmiters - ограничители
// init - Инициализация шаблонов
// arr - ассоциативный массив (см.пример) с дескрипторами и файлами
// root - корневой каталог, где лежат файлы (по-умолчанию текущий)
// delimit - тут можно указать ограничитель из двух символов, например "{}"
function init($arr = "", $root = "", $delimit = "")
// Установка корневого каталога шаблонов
function setroot($root = "")
// Добавление дескрипторов и файлов для работы с шаблонами
// list - ассоциативный массив
function listit($list = "")
// Обработка шаблона
// $d - дескриптор файла ИЛИ МАССИВ!
// $temp - обработка в тег $temp (если не указать, данная ф-ия обработает
// декср.файла и добавит его к массиву с результатами)
function parseit($d = "", $temp = "")
// Получить обработанный массив, возвращает string
// $array - массив
function getparsed($array)
// Указать ограничители
// $d1 - левый, $d2 - правый
// Например $t->delimiters("");
function delimiters($d1 = "", $d2 = "")
// Как listit, только добавить можно не ассоциативный массив, а
// простую строку
// $d - дескриптор файла
// $name - имя файла
function addtolist ($d = "", $name = "")
// Используется для очистки всех массивов в классе
function freshall()
// Используется для очистки результатов обработки
// Очищается $arr
function fresh()
// Вывести на экран.
// В v1.02 - если указан $tag, выводит тег $this->assign["$tag"]
function printit([$tag])
Комментарии:
ИНФОРМАЦИЯ ПО РЕФЕРАТУ:
СТУДЕНТАМ! Уважаемые пользователи нашей Коллекции! Мы напоминаем, что наша коллекция общедоступная. Поэтому может случиться так, что ваш одногруппник также нашел эту работу. Поэтому при использовании данного реферата будьте осторожны. Постарайтесь написать свой - оригинальный и интересный реферат или курсовую работу. Только так вы получите высокую оценку и повысите свои знания.
Если у вас возникнут затруднения - обратитесь в нашу Службу заказа рефератов. Наши опытные специалисты-профессионалы точно и в срок напишут работу любой сложности: от диссертации до реферата. Прочитав такую качественную и полностью готовую к сдаче работу (написанную на основе последних литературных источников) и поработав с ней, вы также повысите ваш образовательный уровень и сэкономите ваше драгоценное время! Ссылки на сайт нашей службы вы можете найти в левом большом меню.
ВЕБ-ИЗДАТЕЛЯМ! Копирование данной работы на другие Интернет-сайты возможно, но с разрешения администрации сайта! Если вы желаете скопировать данную информацию, пожалуйста, обратитесь к администраторам Library.by. Скорее всего, мы любезно разрешим перепечатать необходимый вам текст с маленькими условиями! Любое иное копирование информации незаконно.


Поиск по БЕЛОРУССКИМ рефератам 