Модифікована версія php шаблонізатора html_template_it

вступ

HTML_Template_IT з пакета PEAR був першим шаблонізатором для PHP з яким я познайомився на зорі своєї веб-майстерні діяльності. HTML_Template_IT - простий у використанні і досить легкий для сервера клас, робота якого заснована на парсінгу шаблону за допомогою регулярних виразів з генерацією результуючої сторінки «на льоту». Саме чудове що при всій своїй простоті цей шаблонизатор відмінно підходить як для малих так і для великих проектів.

Зараз я розумію, що функціоналу яким володіє даний клас для його комфортного використання в проектах цілком достатньо, але свого часу я був упевнений в зворотному. Багато наворочені шаблонизатор (наприклад Smarty і Twig) дозволяють займатися прямо таки програмуванням в шаблоні (підтримуються IF-и, різноманітні FOR-и, LOOP-и та інше, аж до вставки в шаблон фрагментів виконуваного PHP коду). Це часто так ускладнює структуру шаблону, що потім в ньому розібратися складніше ніж в програмній частині. Таким чином зводяться нанівець переваги отримані від поділу логіки (PHP) від відображення (HTML).

Отже, попрацювавши з деякою кількістю інших шаблонизатор (аж до нативних) я свідомо повернувся до використання HTML_Template_IT. Єдине чого мені в ньому не вистачало, так це можливості виклику з шаблону функцій (або методів класів). Хтось скаже що це надмірність, але мені цей функціонал був необхідний для проекту над яким я в той момент працював. Ось я і взявся за деяку переробку цього класу щоб, крім іншого, додати і цей функціонал.

Розповім про виконані мною модифікаціях класу HTML_Template_IT докладніше.

PEAR більше не потрібен

Спочатку для роботи HTML_Template_IT потрібно наявності PEAR. який, як виявилося, використовується тільки для обробки виникли при парсінгу шаблону помилок. Ліквідувати цю залежність виявилося не складно, але, справедливості заради, відзначу що цю ідею я підглянув тут. Так що тепер PEAR для роботи шаблонізатора не потрібно, а помилки передаються в функцію trigger_error. яка генерує warning повідомлення користувача рівня (error_type = E_USER_WARNING).

Новий синтаксис розмітки в шаблоні «плейсхолдеров» (змінних), блоків та іншого

Приклад використання шаблонізатора

Тепер з шаблону можна викликати функцію або метод класу

Звичайно було б нерозумно дозволити викликати з шаблону будь-яку функцію або метод, тому список дозволених до виклику з шаблону функцій / методів повинен визначаться в програмній частині (PHP). Для цих цілей я додав класу шаблонізатора метод setFunction (). якому масивом виду array ( "fncAlias" => "fncName") передаються імена функцій (методів класів) які дозволено викликати з шаблону (fncAlias ​​- псевдонім для функції / методу, за яким вона буде викликатися в шаблоні; fncName - ім'я функції / методу. імена функцій / методів можна задавати по одному (одновимірним масивом) або відразу по кілька імен (двовимірний масив). Природно, ці функції / методи повинні бути доступні глобально.

Коли Ви телефонуєте з шаблону функцій / методів класу їм можна передавати параметри. При цьому, у тега параметра в атрибуті val прописується передане значення, а в атрибуті type можна вказати тип значення. Атрибут type є НЕ обов'язковим, і в разі якщо він не вказаний значення трактується як рядок (string). Підтримуються наступні типи значень атрибута type: integer, int, boolean, bool, string, float, double, real, array

Що ще потрібно знати для роботи з HTML_Template_IT

Імена «плейсхолдеров» (змінних в шаблоні) можуть складатися з великих або малих літер латинського алфавіту, цифр, символу підкреслення, крапки і тире (мінус).

Імена функцій методів можуть містити символи допустимі в PHP для назви функції, а також символів $ _->: для позначення статичних і нестатічность методів.

додаткова інформація

Для доопрацювання був узятий HTML_Template_IT версії 1.3.0

наостанок

До статті додається архів, що містить більш розгорнутий приклад використання описаного шаблонізатора, більш докладно ілюструє можливості класу.

Прикріплені файли