Пишем простой шаблонизатор
Создаем класс который мы назовем 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
URL:
https://visavi.net/articles/130