Данный класс представляет собой - простейший компилирующий шаблонизатор, который компилирует шаблон 1 раз, в дальнейшем отображая его из скомпилированной в php-код версии, без необходимости дальнейшей компиляции. Дабы не усложнять - в нём намеренно имеется ТОЛЬКО реализация назначения переменных шаблона, компиляция, отображение и больше ничего.
PHP:
скопировать код в буфер обмена
<?PHP class tpl { public $tpl_vars = array(); /* * Назначает переменные шаблона * @param string $name имя переменной * @param string $value значение переменной * @return bool true */ public function assign($name, $value) { $this -> tpl_vars[$name] = $value; return true; } /* * Компилирует файл шаблона и записывает * результат компиляции в файл. * @param string $template имя файла шаблона * @return bool */ private function compile($template) { foreach ($this -> tpl_vars as $name => $value) { if (strpos($template, '{$' . $name . '}')) { $template = str_replace('{$' . $name . '}', '<?PHP if (isset($this -> tpl_vars["' . $name . '"])) echo("' . $value . '"); ?>', $template); } } } /* * Отображает скомпилированный шаблон. Если скомпилированный * шаблон не найден - производит компиляцию. * @param string $template имя файла шаблона */ public function display($template) { { include($template . '.cache'); } else { if ($this -> compile($template . '.html')) { $this -> display($template); } else { echo 'Произошла ошибка!'; } } } } $tpl = new tpl(); $tpl -> assign('title', 'Тестируем шаблонизатор'); $tpl -> assign('link', 'http://php.su'); $tpl -> assign('name', 'Учи похап!!!11'); $tpl -> display('template');
Содержимое шаблона "template.html"
Проще - некуда.(Отредактировано автором: 29 Октября, 2012 - 03:44:45)
|