Если вы хотите дешевый PHP-шаблонизатор, используйте отдельные файлы с блоками выражений PHP. Можно создать систему шаблонов, используя строки формата printf
, но при таком подходе я вижу две основные проблемы: скорость и удобочитаемость. Функции printf
предназначены для использования на более коротких строках, и хотя у меня нет никакой статистики, я думаю, можно с уверенностью сказать, что sprintf()
или vprintf()
на одной огромной строке, представляющей тело страницы будет медленнее, чем просто использование блоков выражений PHP в файле.
Это приводит к следующей проблеме: удобочитаемость. Сравните эти два HTML-шаблона:
<html>
<head>
<title>%s</title>
</head>
<body>
<div id="main">
<h1>%s</h1>
<p>%s</p>
</div>
<div id="other">
<p>%s</p>
</div>
<p id="footer">
%s. Took %.2f seconds to generate.
</p>
</body>
</html>
и
<html>
<head>
<title><?= $title ?></title>
</head>
<body>
<div id="main">
<h1><?= $header ?></h1>
<p><?= $body_text ?></p>
</div>
<div id="other">
<p><?= $misc_info ?></p>
</div>
<p id="footer">
<?= $copyright ?>. Took <?= $load_time ?> seconds to generate.
</p>
</body>
</html>
Или, допустим, я решил использовать строки формата с индексированными аргументами. Скажем, что-то вроде этого:
<h1>%1$s</h1>
<p>%2$s</p>
<span id="blah">%3$s</p>
<p>%4$s</p>
<p>%5$s</p>
А что если я захочу изменить порядок?
<h1>%1$s</h1>
<p>%3$s</p>
<span id="blah">%5$s</p>
<p>%4$s</p>
<p>%2$s</p>
Они явно надуманные, но подумайте о том, как было бы поддерживать шаблоны printf
в долгосрочной перспективе.
Итак, в общем, если вы хотите быстро и грязно использовать шаблоны PHP, используйте файлы шаблонов, которые содержат блоки выражений PHP. Функции printf
намного лучше справляются с задачами форматирования строк меньшего размера.