Skip to content

Instantly share code, notes, and snippets.

@dmitrybubyakin
Created March 19, 2015 18:05
Show Gist options
  • Save dmitrybubyakin/51bb975984b5bc1b1b69 to your computer and use it in GitHub Desktop.
Save dmitrybubyakin/51bb975984b5bc1b1b69 to your computer and use it in GitHub Desktop.
<?
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;
}
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment