PHP

Простой и быстрый шаблонизатор на 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("путь_до_файла_шаблона");
Теги:
шаблонизатор, компилятор, кеш
Добавлено: 14 Сентября 2013 01:15:30 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...