Пишем простой шаблонизатор (Оценка: +8)

Печать / RSS-лента
Создаем класс который мы назовем Template

<?php
class Template {
}
?>

Теперь мы укажем свойства которые нам пригодятся!

<?php
class Template {
private $_arr = array();
private $_content;
public $template_dir = 'templates/';
}
?>

Теперь мы объявляем метод, который нам позволяет присваивать значения переменным, доступным в шаблоне.
Т.е мы в массив пишем все указанные переменные.
Для чего это нам необходимо увидите ниже =)

<?php
public function __set($var, $name) {
$this -> _arr[$var] = $name;
}
?>


Следующим шагом у нас будет парсинг.

<?php
private function parsing($tpl) {
/*
* Открываем шаблон.
*/
$this -> _content = file_get_contents($this -> template_dir.$tpl);
/*
* И вот теперь можно увидеть для чего нам нужен был метод __set()
* как видите в свойстве _arr у нас хранится то что нам надо заменить.
* Теперь мы обрабатываем переменные в шаблоне, такого вида {$name}
*/
foreach ($this -> _arr as $key => $name) {
$tpl = str_replace('{$'.$key.'}', $name, $this -> _content);
}
return $tpl;
}
?>


Когда у нас все готово, мы пишем метод для вывода шаблона, и сразу обрабатываем его.

<?php
public function display($tpl) {

/*
* Проверяем существует ли заданный шаблон или нет.
*/
if (is_file($this -> template_dir.$tpl)) {

$this -> _content = parsing($this -> template_dir.$tpl);
/*
* И теперь выводим шаблон
*/
echo $this -> _content;
/*
* В случае если файла с шаблоном не найдено, выводим ошибку.
*/
} else {
echo '<p> Неверный путь к шаблону </p>';
}
}
?>


Используем шаблон так:

<?php
/*
* Создаем объект
*/
$template = new Template;
/*
* При необходимости указываем категорию с шаблонами.
* По умолчанию стоит категория templates/
*/
$template -> template_dir = 'my_dir/templates/';
/*
* Указываем какую переменную на что заменить.
*/
$template -> name = 'Hello world =)';
/*
* Выводим шаблон.
*/
$template -> display('template.tpl');

?>


# Nu3oN
Готовый пример можно скачать тут: Example
Автор статьи: AxqpxA (20.08.10 / 00:32)
ооп, php, template, шаблон, шаблонизатор, 7je.ru
Рейтинг: +8
Просмотров: 3229
Комментарии (10) »