Шаблонизировать за 6 секунд (и 6 строк)
По мотивам: 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");

ноября 29, 2007 в 16:56
Рад, что мои посты кому-то навевают идеи, но какой-то уж больно простой у тебя получился шаблонизатор… его и шаблонизатором-то назвать, язык не поварачивается…
У тебя же все переменные хранятся в глобальном пространстве!!!!!
ноября 29, 2007 в 19:46
Все переменные - это свойства класса. $view->var = …
То есть вместо массива $view->REPLS['var'] = …
ноября 29, 2007 в 20:24
Нет, перечитай еще раз мою статью.
А вообще возьми код из нее и пользуйся.
ноября 29, 2007 в 20:46
Я не очень понимаю, почему вместо перегрузки методов __get и __set, чтобы все замены хранились в массиве-свойстве-класса нельзя просто создавать динамически свойства класса с именами автозамен. В конце концов, в этом классе больше не будет никаких свойств.
К тому же, я не люблю PHP 5.
ноября 29, 2007 в 21:14
Как это не будет свойств??? Опа! Читайте еще раз статью. А потом что-нить по проектированию, например, Мартина Фаулера или Гради Буча
ноября 30, 2007 в 09:27
Если тебе необходим некомпилирующий шаблонизатор посмотри на Zend Framework : Zend_View
Кстати я тоже писал одно время простенький шаблонизатор
А насчет PHP5 это ты зря - очень уж много всего вкусного в нем появилось…
декабря 7, 2007 в 12:33
Anton Shevchuk’s Home -Zend Framework: дорабатываем Zend_View – Итак первым попадает под раздачу Zend_View - простой шаблонизатор, очень похож на ряд велосипедов включая мой…
июля 22, 2008 в 00:38
Шаблонизировать за 6 секунд (и 6 строк)…
Я тоже не люблю Smarty. Не только потому, что это – не мой php-класс. А потому, что разработчики Smarty действовали по принципу “идеальное решение …
сентября 17, 2008 в 22:55
Я в конце-концов все равно вернулся к смарти. Периодически свой шаблонизатор приходится дописывать и дописывать и постепенно он в смарти и превращается =)
ноября 17, 2008 в 05:34
Не люблю шаблонизаторы. Постоянно вылазят какие то баги. Для небольших проектов можно прекрасно использовать скрипты без шаблонизатора, только разделить дизайн и код. Получается и легче, и удобнее.