Когда я пишу код PHP для веб-сайтов, мне не нравится смешивать бизнес-логику со слоем представления, и поэтому я склонен создавать шаблоны разметки.Я написал очень легкий шаблонный движок, чтобы облегчить это, так как я действительно не хочу переходить на полноценный шаблонный фреймворк, такой как Smarty.
Вот упрощенный пример того, что я делаю:
function renderTemplatePage($page, $params)
{
$page = readTemplateFile("templates/{$page}");
$tokens = getTemplateTokens($page);
foreach($tokens as $token)
{
if(substr($token, 0, 6) == "%_TPL_")
{
$subPage = renderTemplatePage(tokenToPageName($token), $params);
$page = str_replace($token, $subPage, $page);
}
else
{
$page = str_replace($token, $params[$token], $page);
}
}
return $page;
}
Пример страницы:
<html>
<head><title>%_PageTitle_%</title></head>
<body>
<div id="header">%_TPL_Header_%</div>
<div id="content">%_TPL_Homepage_%</div>
<div id="footer">%_TPL_Footer_%</div>
</body>
</html>
При вызове renderTemplatePage("index", array("PageTitle" => "Home"))
будет создана страница, озаглавленная «Домашняя страница», с содержимым из шаблонов «Верхний колонтитул», «Домашняя страница» и «Нижний колонтитул».
Я выполняю всю свою логику (включая запросы к базе данных и т. Д.) Перед вызовом рендеринга, поэтому я могу собрать большой массив $params
и просто выполнить один вызов для его рендеринга.
Есть ли недостаткив этой методологии?Есть ли более стандартный способ сделать это?