Шаблонизатор на php
Відео: Створення власного шаблонізатора
Мене багато разів просили дати код шаблонізатора на PHP, яким я користуюся. Але перш ніж перейти до цього коду, давайте трохи розповім про найбільш популярному шаблонизатор - Smarty. Відразу скажу, що я завжди був проти всіх цих чужих і величезних бібліотек. але Smarty я стерпів і деякий час використовував, а потім я подумав: "А навіщо мені потрібна ця смітник, якщо від шаблонізатора мені потрібен мінімум функціональності?".
Дійсно, а що взагалі потрібно від шаблонізатора? Від нього потрібно лише підставляти в потрібні місця tpl-файлів певні змінні з PHP. Всі говорять, що PHP-код в tpl-файлах - це погано. А чим краще Smarty-код в tpl-файлах? Так абсолютно нічим, і це навіть гірше, оскільки цей Smarty-код потім перетворюється в PHP-код і виконується.
Smarty вже так сильно розійшовся, що став взагалі окремою мовою зі своїм синтаксисом, зі своїми циклами і умовами. Хіба це потрібно від шаблонізатора?
Завдання шаблонізатора - тільки підставляти певні значення в певні місця, а все цикли я можу написати і на PHP, і проміжна мова для цього не потрібно.
Відео: Простий шаблонизатор на PHP
Отже, привожу код свого шаблонізатора, яким я настійно рекомендую Вам користуватися:
lt ;?php
classTemplate{
private $ dir_tmpl-// Директорія з tpl-файлами
private $ data = array() -// Дані для виведення
publicfunction __construct($ dir_tmpl){
$ this-gt;dir_tmpl = $ dir_tmpl-
}
/ * Метод для додавання нових значень в дані для виведення * /publicfunctionset($ name, $ value){
$ this-gt;data[$ name]= $ value-
}
/ * Метод для видалення значень з даних для виведення * /publicfunctiondelete($ name){
unset($ this-gt;data[$ name]) -
}
/ * При зверненні, наприклад, до $ this-gt; title буде виводитися $ this-gt; data [ "title"] * /publicfunction __get($ name){
if(isset($ this-gt;data[$ name]))return $ this-gt;data[$ name] -
return""-
}
/ * Висновок tpl-файлу, в який підставляються всі дані для виведення * /publicfunction display($ template){
$ template = $ this-gt;dir_tmpl.$ template.".tpl"-
ob_start() -
include ($ template) -
echo ob_get_clean() -
}
}
?gt;всього 1 файл розміром 0.5 КБ, замість більше 100 файлів і приблизно 1 МБ (в 2000 разів більше). Але при цьому все найважливіше даний клас зробить.
Відео: # 1.4.3 Експерт PHP: шаблонизатор Smarty. продовження
тепер створимо tpl-файл (Нехай називається menu.tpl), Який буде без проблем оброблений цим шаблонізатором:
lt ;?php foreach($ this-gt;menu as $ link = Gt; $ name){?gt;
lt;? =$ link?gt;"Gt;lt;? =$ name?gt;
lt ;?php }?gt;
І, нарешті, давайте напишемо PHP-файл, який буде викликати шаблонизатор:
lt ;?php
$ template =newTemplate("Tmpl /") -
$ menu = array() -
$ menu["Http://site.ru"]="Головна"-
$ menu["Http://site.ru/page-1.html"]="Сторінка 1"-
$ menu["Http://site.ru/page-2.html"]="Сторінка 2"-
$ template-gt;set("Menu", $ menu) -
$ template-gt;display("Menu") -
?gt;Якби ми використовували Smarty, то у нас було б все рівно так само, але в tpl-файлі ми б написали код Smarty, який потім би замінювався на PHP і виконувався. А ми ж відразу написали цей PHP-код. І який сенс вчити окрема мова, який буде лише гальмувати роботу, а також вимагає наявність величезної бібліотеки?
Сподіваюся, дана стаття Вам покаже, що не потрібно гнатися за безглуздою функціональністю Smarty. Все це в набагато більшому обсязі є в PHP, а задача шаблонізатора всього лише одна - підставляти в tpl-файли значення, отримані з PHP. Усе.
Правила освоєння php новачкам
Чому dreamweaver - це погано?
Як створити асоціативний масив в jаvascript
Як зробити парсер контенту на php
Як використовувати файли tpl
Навіщо потрібен платний хостинг
Як дізнатися ip-адреса відвідувача через php
Як дізнатися реальний ip-адреса відвідувача
Що таке css спрайт?
Як створити движок для сайту
Навіщо потрібен тег ruby в html.
Як проводити рефакторинг?
Openserver або denwer?
«Розумне» кільце smarty ring - помічник для смартфона
Gulp. Спостереження за змінами в файлах.
Конфігурація для sublime text.
Чи варто використовувати flash при створенні сайту
Розбиття і об`єднання рядків в php
Створення змінних в php
Компонентний (блоковий) підхід
Joomla vs сайт з нуля
Чи варто використовувати flash при створенні сайту
Як дізнатися реальний ip-адреса відвідувача
Як дізнатися ip-адреса відвідувача через php
Валідність html-коду
Joomla vs сайт з нуля
Openserver або denwer?
«Розумне» кільце smarty ring - помічник для смартфона
Як створити движок для сайту
Чому dreamweaver - це погано?
Як зробити парсер контенту на php