Эли4ка, у меня с давних времен валяется простейший шаблонизатор. Он не поддерживает циклов. Но работает он с любым куском HTML. Его можно вызывать в цикле для обработки однотипных кусков кода. Например, при создании списка чего-нибудь, ну хотя бы товаров в интернет-магазине.
Темплейт достаточно простой. Это HTML со вставками имен переменных ПХП, безо всяких там скобок.
<div class="article-small row">
<div class="col-xs-4 col-sm-4">
<img data-src="$articlePhoto" class="prepare-template article-image"/>
</div>
<div class="col-xs-8 col-sm-8">
<h2>$articleTitle</h2>
<h3>$articleSubtitle</h3>
<div>Автор:<span>$articleAuthor</span></div>
<div>$articleShortContent</div>
</div>
</div>
Функция обработки темплейта
function executeTemplate($tmpl, $arr = []) {
if (is_array($arr) && count($arr) > 0) {
extract($arr);
}
$useTemplate = htmlspecialchars($tmpl);
eval('$evaluatedTemplate = ' . "\"$useTemplate\";");
echo htmlspecialchars_decode($evaluatedTemplate);
}
Ну и использование темплейта:
$tmplKey = loadTemplate('article_small');
foreach ($articles as $key => $article) {
executeTemplate($templatesArray['article_small'], $article);
}
В предыдущем коде $articles - это массив всех данных, прочитанных из БД, $article - ассоциативный массив, по сути одна строка из БД. Ключи в $article являются одновременно именами переменных в темплейте, те самые $articleTitle, $articleSubtitle и другие - это существенно!
Изначально я ставил себе задачу, чтобы темплейт был универсальный, т.е. чтобы с ним можно было работать как в ПХП, так и в JS. Задача была достигнута :) Тут есть свои ограничения, куда ж без них. Но система на 100% рабочая, с поставленной задачей справляется.
Почему, говоришь, еще и в JS? Чтобы при подгрузке данных аяксом и динамическом обновлении использовать тот же темплейт. Дабы не мудрить ничего лишнего.
PS. Насчет ключей в массиве $article. Естественно, они там без знака "доллар"! $artilce['articleTitle'], $article['articleSubtitle']
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)