Простой шаблонизатор с выполнением кода PHP внутри шаблона
//====================================================
// Класс
//====================================================
<?php
class Template
{
public $vars = array();
public $template;
public function __construct($tpl_name)
{
if(empty($tpl_name) || !file_exists($tpl_name))
{
return false;
}
else
{
/* $this->template = file_get_contents($tpl_name);*/
ob_start();
include ($tpl_name);
$this->template = ob_get_contents();
ob_end_clean();
}
}
public function set_tpl($key,$var)
{
$this->vars[$key] = $var;
}
public function tpl_parse()
{
foreach($this->vars as $find => $replace)
{
$this->template = str_replace($find, $replace, $this->template);
}
}
}
?>
//====================================================
// Непосредственно шаблон
//====================================================
<!DOCTYPE HTML>
<html>
<head>
<title>{TITLE}</title>
</head>
<body style="background-color: {BGCOLOR}">
{CONTENT}
<?php
$a = 2;
$b = 3;
$c = $a + $b;
echo "<br>" . $c;
?>
</body>
</html>
//====================================================
// Использование
//====================================================
<?php
require('classes/Template.php'); // Подключаем файл с классом
$content = "
<h1>Videamus animi partes, quarum est conspectus illustrior;</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Piso igitur hoc modo, vir optimus tuique, ut scis, amantissimus. Ait enim se, si uratur, Quam hoc suave! dicturum. <mark>Duo Reges: constructio interrete.</mark> <b>Immo videri fortasse.</b> </p>
<ol>
<li>Atque hoc loco similitudines eas, quibus illi uti solent, dissimillimas proferebas.</li>
<li>Huius ego nunc auctoritatem sequens idem faciam.</li>
<li>Utilitatis causa amicitia est quaesita.</li>
</ol>
<ul>
<li>An potest cupiditas finiri?</li>
<li>Sit ista in Graecorum levitate perversitas, qui maledictis insectantur eos, a quibus de veritate dissentiunt.</li>
<li>Laboro autem non sine causa;</li>
<li>Quid igitur dubitamus in tota eius natura quaerere quid sit effectum?</li>
</ul>
";
$template = new Template('template/index.tpl');
$template->set_tpl('{TITLE}','Проверка шаблонизатора'); // Установка переменной {TITLE}
$template->set_tpl('{BGCOLOR}','#9CCCC8'); // Установка цвета {BGCOLOR}
$template->set_tpl('{CONTENT}', $content); //Установка переменной {CONTENT}
$template->tpl_parse(); // Парсим
echo $template->template; // Выводим нашу страничку
?>