Mr.KTO blog

Шаблонизировать за 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");
habrahabr.ru google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru rumarkz.ru memori.ru moemesto.ru moikrug.ru myscoop.ru mister-wong.ru rucity.com vaau.ru

Комментарии (10) на “Шаблонизировать за 6 секунд (и 6 строк)”

  1. larin пишет:

    Рад, что мои посты кому-то навевают идеи, но какой-то уж больно простой у тебя получился шаблонизатор... его и шаблонизатором-то назвать, язык не поварачивается...
    У тебя же все переменные хранятся в глобальном пространстве!!!!!

  2. mrkto пишет:

    Все переменные - это свойства класса. $view->var = ...
    То есть вместо массива $view->REPLS['var'] = ...

  3. larin пишет:

    Нет, перечитай еще раз мою статью.
    А вообще возьми код из нее и пользуйся.

  4. mrkto пишет:

    Я не очень понимаю, почему вместо перегрузки методов __get и __set, чтобы все замены хранились в массиве-свойстве-класса нельзя просто создавать динамически свойства класса с именами автозамен. В конце концов, в этом классе больше не будет никаких свойств.
    К тому же, я не люблю PHP 5.

  5. larin пишет:

    Как это не будет свойств??? Опа! Читайте еще раз статью. А потом что-нить по проектированию, например, Мартина Фаулера или Гради Буча

  6. Anton Shevchuk пишет:

    Если тебе необходим некомпилирующий шаблонизатор посмотри на Zend Framework : Zend_View

    Кстати я тоже писал одно время простенький шаблонизатор

    А насчет PHP5 это ты зря - очень уж много всего вкусного в нем появилось...

  7. Trackbacks пишет:

    Anton Shevchuk’s Home -Zend Framework: дорабатываем Zend_ViewИтак первым попадает под раздачу Zend_View - простой шаблонизатор, очень похож на ряд велосипедов включая мой...

  8. Социальная сеть для блоггеров sloger.net пишет:

    Шаблонизировать за 6 секунд (и 6 строк)...

    Я тоже не люблю Smarty. Не только потому, что это – не мой php-класс. А потому, что разработчики Smarty действовали по принципу "идеальное решение ...

  9. Никола Тесла пишет:

    Я в конце-концов все равно вернулся к смарти. Периодически свой шаблонизатор приходится дописывать и дописывать и постепенно он в смарти и превращается =)

  10. Техник пишет:

    Не люблю шаблонизаторы. Постоянно вылазят какие то баги. Для небольших проектов можно прекрасно использовать скрипты без шаблонизатора, только разделить дизайн и код. Получается и легче, и удобнее.

Оставить комментарий