aaadddminnn
@aaadddminnn
php it ubuntu debian

Как прикрутить memcached?

Привет. Написал мини шаблонизатор.
class template {

    function optimize($buffer) {
        $search = array('/\>[^\S ]+/s', '/[^\S ]+\</s', '/(\s)+/s');
        $replace = array('>', '<', '\\1');
        $buffer = preg_replace($search, $replace, $buffer);
        return $buffer;
    }

    private function compile($str) {
        $include = DI . 'app/template/include/';
        $pattern = "|\@@([^)]+?)\@@|";
        preg_match_all($pattern, $str, $arr);

        foreach ($arr[1] as $row) {
            $str = str_replace("@@" . $row . "@@", "", $str);
        }
        $pattern = "|\[{([^)]+?)\}]|";
        preg_match_all($pattern, $str, $arrr);
        
        foreach ($arrr[1] as $row) {
            $str = str_replace("[{" . $row . "}]", '<?=$array["'.$row.'"]?>', $str);
        }
        
        $head = self::optimize(file_get_contents($include . $arr[1][0] . '.html'));
        $body = self::optimize($str);
        $foot = self::optimize(file_get_contents($include . $arr[1][1] . '.html'));
        return $head . $body . $foot;
    }

    public function load($template, $array) {
        $template_file = DI . TEMPLATE_DIR . $template;
        $NN = hash('adler32', $template);
        $file = DI . TEMPLATE_CACHE_DIR . $NN . '.cache';
        if (file_exists($template_file)) {
            if (file_exists($file)) {
                include $file;                
            } else {
                $text = self::compile(file_get_contents($template_file));
                $fp = fopen($file, "w");
                fwrite($fp, $text);
                fclose($fp);
                include $file;
            }
        } else {
            echo'404';
        }
    }

}

Класс очень прост (предназначен для верстальщика, а то она так тупит что неможет запомнить как подключать файлы и выводить данные из масива )
Функция compile регуляркой заменяет инклайд и масивы. Потом подгружает нужные куски и прогоняет их через функцию optimize (она удаляет переносы строки и пробелы)

Функция load проверяет есть ли такая вьюшка если нету то вызовет 404 если есть то проверим есть ли кеш. Если кеш есть то его инклайдим, если нет то создаём и инклайдим.

Проблема в том что хочу прикрутить мемкеш. Если записать в мемкеш то как потом заинклайдить данные из него?
Кроме инклайда выхода невижу так как eval не хочеть роботать с кучей хтмл и вызовом php посредством <?= ?>
Зарание спасибо за помощь
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы