Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Сборник статей
 
 

Пишем класс Template

Автор: Андрошук Александр

Класс шаблонов это незаменимая часть в форуме, гостевой, чате и т.д. Это класс прост, причём очень прост. Объясню основные функции: загрузка шаблона, обработка в нём переменных и выход шаблона. Давайте рассмотрим подробнее:

<?php

class template # создали класс

{ # зададим переменные

var $data = array(); # переменная для шаблонов

var $root = '.'; # каталог для шаблонов

var $ext = '.tpl'; # расширение для шаблонов

var $da_vr = array(); # переменная для преобразованых шаблонов

// Класс создан, далее формируем функции:

function template($dir,$ext)

{

if(is_dir($dir)){$this -> root = $dir;}

else{die('Ошибка! <b>'.$dir.'</b> - это не директория!');}

$this -> ext = $ext;

}

// Эта функция выполниется сразу после создания класса, поэтому при создании надо

// указывать директорию и расширения шаблонов (см. ниже). Далее надо загрузить шаблон:

function load($name)

{

$nn = $name;

$dir = $this -> root;

$ext = $this -> ext;

$name = $dir.'/'.$name.$ext;

if(!is_file($name)) {die('Ошибка <b>'.$name.'</b> - это не файл!');}

$fp = fopen($name,'r');

$data = fread($fp,filesize($name));

fclose($fp);

$this -> data[$nn] = $data;

$this -> da_vr[$nm] = $data;

}

// В этой функции мы считали шаблон через fread и запихнули его в две переменных:

// da_vr и data. При загрузке шаблона надо указывать имя шаблона без расширения

// (см.ниже). Далее преобразовываем переменные:

function vars($nm,$vars = array())

{

$data = $this -> data[$nm];

while(list($id,$var) = each($vars))

{

global $$vars[$id];

$data=str_replace('{'.$vars[$id].'}',$$vars[$id],$data);

}

$this -> da_vr[$nm] = $data;

}

// Тут мы преобразовали переменные и загнали в переменную da_vr. И осталось вывести

// шаблон:

function out($name)

{

$ret = $this -> da_vr[$name];

$this -> da_vr[$name] = $this -> data[$name];

return $ret;

}

}

После вывода шаблона, все переменные в нём уничтожились, их надо задавать заново. А теперь весь код, чтобы небыло проблем (без комментов):

<?php

class template # создали класс

{ # зададим переменные

var $data = array(); # переменная для шаблонов

var $root = '.'; # каталог для шаблонов

var $ext = '.tpl'; # расширение для шаблонов

var $da_vr = array(); # переменная для преобразованых шаблонов

function template($dir,$ext)

{

if(is_dir($dir)){$this -> root = $dir;}

else{die('Ошибка! '.$dir.' - это не директория!');}

$this -> ext = $ext;

}

function load($name)

{

$nn = $name;

$dir = $this -> root;

$ext = $this -> ext;

$name = $dir.'/'.$name.$ext;

if(!is_file($name)) {die('Ошибка <b>'.$name.'</b> - это не файл!');}

$fp = fopen($name,'r');

$data = fread($fp,filesize($name));

fclose($fp);

$this -> data[$nn] = $data;

$this -> da_vr[$nm] = $data;

}

function vars($nm,$vars = array())

{

$data = $this -> data[$nm];

while(list($id,$var) = each($vars))

{

global $$vars[$id];

$data=str_replace('{'.$vars[$id].'}',$$vars[$id],$data);

}

$this -> da_vr[$nm] = $data;

}

function out($name)

{

$ret = $this -> da_vr[$name];

$this -> da_vr[$name] = $this -> data[$name];

return $ret;

}

}

?>

Обясню как работать с классом. Допустим у нас есть шаблон body.tpl в директории data. Его содержимое:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>

<head>

<title> {title} </title>

</head>

<body bgcolor={bgcolor}>

{text}

</body>

</html>

Работа с классом:

include('template.php'); # включили класс

# Зададим переменные #

$bgcolor = '#CCFFCC';

$text = 'Тест класса!';

$title = 'ТЕСТ!';

$tpl = new template('./data','.tpl'); # создали объект, задали каталог и расширение

$tpl -> load('body'); # зашрузили шаблон

$tpl -> vars('body',array('text','title','bgcolor')); # указали какие переменные преобразовать, они должны быть заданы зарание

echo $tpl -> out('body'); # вывели шаблон

Всё, я прощаюсь с вами.

Tiger (c) 2004 специально для Web-support.ru.

 
 » Обсудить эту статью на форуме

 
 Сборник статей 
 Содержание раздела 
Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS