Шаблонизировать за 6 секунд (и 6 строк)
29 ноября 2007
По мотивам: LARIN.in – Прощай Smarty или простой шаблонизатор.
Я тоже не люблю Smarty. Не только потому, что это – не мой php-класс. А потому, что разработчики Smarty действовали по принципу "идеальное решение для всех". Эта излишность просто мозолит глаз: здесь и разные форматы имён переменных, и модификаторы (д.б. в css или в php-коде), временные переменные в циклах, слишком много слов (имена аттрибутов функций, начало/конец цикла). При том, что даже кэшированный в php код тормозит. И не говоря о том, что сам класс огромен и вы зависите от выпусков обновлений.
Я же следую (раньше – неосознанно) принципам экстремельного программирования. То есть, реализовывать возможности программы только по текущим потребностям. Не более. (Исключение – "правило пяти минут": если что-то можно сделать меньше, чем за 5 мин. – это надо сделать немедленно, т.к. на возврат к делу (чтобы загрузить программу в голову) уйдёт очень много времени.)
Спорить о том, зачем нужен шаблонизатор можно долго. Я считаю, что в каждом конкретном проекте нужно использовать минимальный шаблонизатор, выполняющий наилучшим образом необходимые задачи. То есть, если, например, требуется сократить размер шаблонных конструкций (по сравнению с php-шаблонами), или сделать так, чтобы шаблон можно было удобно редактировать в Dreamweaver – нужно написать такой шаблонизатор.
У меня уже есть один. Но для текущего проекта я решил придумать новый. Всё гениальное просто:
класс шаблонизатора:
class View {
function parse_page($source_file) //public
{
include($source_file);
}
}
пример шаблона:
<html>
<head><title><?=$this->title?></title></head>
<body>
<table>
<?php foreach($this->companies as $k => $v) { ?>
<tr><td><?=$k?></td><td><?=$v?></td></tr>
<?php } ?>
</table>
</body>
</html>
использование:
require_once("inc/View.php");
$view = new View;
$view->title = "Page title here";
$view->companies = array("Apple" => "iPod", "Microsoft" => "Windows", "Google" => "AdSense");
$view->parse_page("skin/tskin.php");