Простой и быстрый шаблонизатор на PHP
Мне захотелось с вами поделиться одной простой полезной вещью — шаблонизатором. В него также встроен компилятор + кэш.
Предистория
Все началось давно. неслолько месяцев назад я даже не знал что такое оператор echo. Но мне таки очень хотелось научиться работать на PHP, хотябы делать простые сайты с шаблонами, без использования БД.
Начал с просмотра скринкаста Костикса. Неплохо, даже очень. Вроде начал разбираться, но в планах было большее. Хотелось сделать CMS.
Ну ладно. Фронтенд и бэкенд почти готовы. Но есть одно «но»: хотелось интегрировать шаблоны. Да не просто шаблоны с нативным синтаксисом PHP, а с использованием лексем, типа
{CONTENT}.
Код
Код очень простой, но работающий:
class Style {
protected $cache_dir = ""; // Путь к директории кэша
protected $ext = ""; // Расширение для кэша
// Загрузка
function load ($path) {
$name = basename ($path);
if (file_exists($cache_dir.$name.$ext)) {include_once ($cache_dir.$name.$ext);}
else {$this->compile($path, $name);}
}
// Компиляция
function compile ($path, $name) {
$file = file_get_contents ($path);
$result = $this->replace($file);
file_put_contents ($cache_dir.$name.$cache_ext, $result);
include_once ($cache_dir.$name.$cache_ext);
}
// Замена переменных
function replace ($data) {
$matches = array (
"{переменная}" => "значение",
);
$result = str_replace (array_keys($matches), array_values($matches), $data);
return $result;
}
// Очистка кэша
function update () {
$handle = opendir ($cache_dir);
while (false !== ($file = readdir($handle))) {
if ($file !== "." and $file !== "..") {
$result = unlink ($cache_dir.$file);
}
}
closedir ($handle);
return $result;
}
}
$style = new Style (); // Определение объекта
Вызов
$style->load("путь_до_файла_шаблона");
Комментарии:
Нету комментариев для вывода...