Статьи по
Прислал: Денис Давыдов [ 19.04.2001 @ 02:01 ]
Раздел:: [ Статьи по PHP ]
<tr> <td align="right" class="th" style="background-color:<!-- COLOR -->; color:black"> <!-- PWD --> </td> <td class="th" style="background-color:<!-- COLOR -->; color:black"> <!-- FILESIZE --> </td> </tr> |
<?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(); ?> |
Детальное описание
В классе определенны массивы:
$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])
Если возникнут какие-либо комментарии, пишите на null@magelan.ru. Также выслушаю замечания и поправки.
Огромное спасибо Fil (fil@apb.farlep.net) за некоторые дополнения и замечания :) И всем тем, кто откликнулся!
Денис Давыдов.