Я пытаюсь создать небольшую систему шаблонов и иметь функцию, которая зацикливается на массиве элементов.
В настоящее время я использую функции буферизации вывода и включаю, чтобы я мог загрузить файл шаблона, пока он имеет область видимости для класса.
function loadTemplate($name, $vars) {
$buf = '';
$path = $name . '.html';
if (file_exists($path)) {
$this->vars = $vars;
ob_start();
include($path);
$buf = ob_get_clean();
}
return $buf;
}
Мне просто интересно, смогу ли я сохранить исходный шаблон в массиве, а затем запустить его (как если бы он был включен), сохраняя при этом область действия, например.
function loadTemplate($name, $vars) {
$buf = $template = '';
if (isset($this->cache[$name]))
$template = $this->cache[$name];
else {
$path = $name . '.html';
$template = file_get_contents($path);
$this->cache[$name] = $template;
}
//Exec template here with scope.
}
Или я просто педантичен и пытаюсь микрооптимизировать :)