Шаблонизатор на php

Відео: Створення власного шаблонізатора

Шаблонизатор на 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. Усе.

Поділися в соціальних мережах:

Схожі
Чи варто використовувати flash при створенні сайтуЧи варто використовувати flash при створенні сайту
Як дізнатися реальний ip-адреса відвідувачаЯк дізнатися реальний ip-адреса відвідувача
Як дізнатися ip-адреса відвідувача через phpЯк дізнатися ip-адреса відвідувача через php
Валідність html-кодуВалідність html-коду
Joomla vs сайт з нуляJoomla vs сайт з нуля
Openserver або denwer?Openserver або denwer?
«Розумне» кільце smarty ring - помічник для смартфона«Розумне» кільце smarty ring - помічник для смартфона
Як створити движок для сайтуЯк створити движок для сайту
Чому dreamweaver - це погано?Чому dreamweaver - це погано?
Як зробити парсер контенту на phpЯк зробити парсер контенту на php
» » Шаблонизатор на php