Я храню свои шаблоны в виде файлов и хотел бы иметь возможность хранить их также в базе данных MySql.
Моя система шаблонов
//function of Template class, where $file is a path to a file
function fetch() {
ob_start();
if (is_array($this->vars)) extract($this->vars);
include($file);
$contents = ob_get_contents();
ob_end_clean();
return $contents;
}
function set($name, $value) {
$this->vars[$name] = is_object($value) ? $value->fetch() : $value;
}
использование:
$tpl = & new Template('path/to/template');
$tpl->set('titel', $titel);
Пример шаблона:
<h1><?=titel?></h1>
<p>Lorem ipsum...</p>
Мой подход
- Выбор шаблона из базы данных в виде строки
- То, что я получил, выглядит как $ tpl = "<<em> h1> <</em>? = $ Titel?> ...";
- Теперь я хотел бы передать его в систему шаблонов, поэтому я расширил свой конструктор и функцию выборки:
function fetch () {
if (is_array($this->vars)) extract($this->vars);
ob_start();
if(is_file($file)){
include($file);
}else{
//first idea: eval ($file);
//second idea: print $file;
}
$contents = ob_get_contents();
ob_end_clean();
return $contents;
}
'eval 'дает мне исключение Parsing, потому что он интерпретирует всю строку как php, а не только часть php.«Печать» действительно странная: она не печатает персонал между ними, но я вижу это в исходном коде страницы.Функция php игнорируется.
Так что же мне попробовать вместо этого?