Mustache — шаблонизатор без логіки

17

Від автора: при розробці власного скрипта або сайту завжди виникає питання як і за яким принципом відображати дані на його сторінках. Найкращий спосіб — це повне відділення логіки веб-додатки від його дизайну, що передбачає шаблон проектування MVC. Але якщо для відображення даних використовуються шаблони, як реалізувати шаблонизатор, який буде довантажувати необхідні шаблони і передавати певний набір даних?

У даному уроці ми поговоримо про досить цікавий і швидко завойовує популярність шаблонизаторе, який в прямому сенсі позбавлений логіки — його назва Mustache.

Mustache — шаблонизатор без логікиMustache — шаблонизатор без логіки

Установка

Mustache — шаблонизатор, який містить мінімум керуючої логіки і доступний для різних мов програмування. Він доступний як для серверних мов програмування (PHP, Ruby і т. д.), а так само і для клієнтських (Javascript). Для встановлення даного шаблонизатора, переходимо за адресою http://mustache.github.io/:

Mustache — шаблонизатор без логіки

Далі клікаєм по посиланню PHP, при цьому нас скеровано на сторінку скачування шаблонизатора Mutache, для використання в середовищі мови PHP (у даному уроці ми будемо розглядати застосування шаблонизатора для скриптів PHP).

Mustache — шаблонизатор без логіки

Потім клацаємо по посиланню Download ZIP і викачуємо ісходник шаблонизатора Mustache у вигляді ZIP-архіву. В результаті розпакування ми отримуємо папку mustache.php-master, в якій нас цікавить вміст каталогу src, в якому розташована папка Mustache – це і є власне шаблонизатор Mustache. Дану папку ми скопіюємо в каталог lib нашого тестового проекту, або Ви можете скопіювати цей каталог в будь-яку директорію Вашого проекту, де зберігаються сторонні бібліотеки.

Також зверніть увагу, що на сторінці скачування шаблонизатора (в самому низу) присутнє посилання на сторінку документації по шаблонизатору Mustache.

Далі необхідно підключити файл Autoloader.php, в якому описаний механізм автоматичного завантаження класів шаблонизатора. Для тестування, я створив порожній файл index.php, який буде представляти собою головну сторінку нашого тестового проекту. У даний файл і ми підключимо необхідний файл шаблонизатора.

require «lib/Mustache/Autoloader.php»;

Потім, звертаючись до класу Mustache_Autoloader, викликаємо метод register(), які реєструє методи автоматичного завантаження класів.

На цьому установка шаблонизатора завершена.

Найпростіший шаблон

Для початку роботи з шаблонизатором, насамперед необхідно створити об’єкт головного класу Mustache_Engine:

$m = new Mustache_Engine;

За замовчуванням шаблонизатор Mustache працює з шаблонами, які являють собою звичайну рядок, або набір рядків(тобто шаблон – це значення рядкового типу). Тому створимо найпростіший шаблон і збережемо його в змінній:

$tpl = ‘

Hello {{name}} {{foo}}

‘;

В шаблоні, конструкція {{name}} – це відображення на екран значення змінної з екрануванням HTML-сутностей, де name – ім’я змінної. При цьому в якості змінної ми можемо передати значення, що повертається анонімної функцією.
Далі створимо масив, осередки якого будуть передані в шаблон:

$param = array(
‘name’=>’Vasya’,
‘foo’ => function() {
return ‘world’;
}
);

При цьому імена ключів масиви – це імена змінних передаються в шаблон, відповідно – значення комірок – це значення переданих змінних. Далі, викликаємо метод render(), об’єкта класу Mustache_Engine, які передасть змінні з масиву $param в шаблон $tpl, і поверне повністю готовий код для відображення на екран, який можна відобразити за допомогою функції echo:

echo $m->render($tpl,$param);

При цьому на екрані ми побачимо наступне:

Mustache — шаблонизатор без логіки

Тобто, як Ви бачите, ми успішно відобразили дані на екрані, використавши найпростіший шаблон. Змінні в шаблон можна передавати, використовуючи об’єкти спеціальних класів. Наприклад, створимо папку views, в якій будемо зберігати види (Views) для тестового сайту. Далі в даній папці створимо файл main.php з класом View: