Главная > Новости > велосипед с квадратными колесами или делаем свой шаблонизатор

велосипед с квадратными колесами или делаем свой шаблонизатор

Наверно любой веб-программист проходит через изобретение своего собственного “велосипеда”, часто который получается с квадратными колесами. Много девелоперов стряпают свои cms, многие к ним разрабатывают свои шаблонизаторы – я не исключение.
CMS своя у меня уже есть, в качестве шаблонизатора юзал smarty, с xlst как-то вообще не сраслось из-за показавшейся сложности. Smarty юзал очень долго, но всегда бесило в нем то, что не хватало каких-то в шаблоне функций, дописывать плагины запарно на каждую мелкую функцию php, так же бесило вставлять {literal} в javascript – очень отягощает отладку, когда забываешь их вставить.

От шаблонизатора хотелось:

  • использовать в шаблоне чистый php <?php echo $this -> peremennay; ?>
  • не иметь никаких там кеширований, т к за это у меня отвечает cms
  • не иметь ничего лишнего, кроме передачи переменных в шаблон и вывод шаблона браузеру
  • имена функций передачи данных и отображения данных должны совпадать с именами в Smarty (дабы не лопатить кучу кода, да и дело привычки).
  • так же нужна была возможность подгрузки каких-то своих плагинов, для решения задач именно вывода данных.
  • возможность инклудов шаблонов внутри шаблона (include_tpl)

В итоге за пару часов накидал свой шаблонизатор:

  • передача переменных в шаблон assign( $varName, $varValue = null ) – аналогично как в смарти, можно передавать как 1 переменную, так и массив переменных
  • clear_assign( $varName ) – стереть переменную
  • clear_assign_all( ) – стереть все переменные
  • get( $varName ) – получить значение переменной
  • fetch( $template_name ) – получить результат работы шаблона
  • display( $template_name ) – вывести на экран шаблон
  • include_tpl( $template_name ) – подключить внутри шаблона другой шаблон

При вызове шаблонизатора конструктору передается путь к папке с шаблонами и разделитель директорий, по умолчанию ‘/':
$template = new Template( $path );
Путь к папке с шаблонами можно изменить, передав новое значение $template -> template_dir = ‘new path';

Плагины складываются в папку plugins, имя файла с плагином должно иметь имя вызываемой функции. Например если в шаблоне вызываем <?php echo $this -> return_ext( $var ); ?>, тогда в папке с плагинами должен лежать файл return_ext.php, с функцией function template_function_return_ext($string). Плагины не загружаются вместе с шаблонизатором, а подгружаются только в случае вызова функции в шаблоне.

Пример использование:

test.php:

<?php

$template = new Template( ‘/path’ );

$template -> assign( ‘word’, ‘Hello world’ );

$template -> display( ‘first_template.php’ );

?>

first_template.php:

<strong><?php echo $this -> word;?></strong>

Результат, в браузер выведется: Hello world

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

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Categories: Новости Tags:
  1. Пока что нет комментариев.
*