Шаблонизатор на 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 сайт з нуля