Smarty

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
Smarty
Розробник(и) New Digital Group, Inc.
Стабільний випуск 3.1.11 (20 червня 2012; 862 дні тому)
Операційна система Кросплатформенне програмне забезпечення
Тип компілюючий обробник шаблонів
Ліцензія GNU LGPL
Сайт www.smarty.net

Smarty — це компілюючий обробник шаблонів до PHP. Надає інструменти, які дозволяють домогтися відділення прикладної логіки й даних від відображення. Це дуже зручно в ситуаціях, коли програміст і верстальник шаблону працюють окремо.

Можливості[ред.ред. код]

Smarty дозволяє:

  • Створювати функції та модифікатори користувача.
  • Використовувати роздільники тегів шаблону.
  • Включяти PHP-код прямо в шаблон.
  • Користувальницькі функції кешування.
  • Використання компонентної архітектури.

Для спрощення створення масштабованих веб-застосунків в Smarty вбудований механізм кешування.

Механізм дії[ред.ред. код]

Smarty читає файли шаблонів та створює PHP-код на їх основі. Код створюється один раз і потім лише виконується тому немає необхідності обробляти файл шаблона для кожного запиту та кожний шаблон може користуватися всіма перевагами розширень PHP для кешування байт-коду, таких як eAccelerator або PHP Accelerator. Smarty став, ймовірно, першою шаблонною бібліотекою, яка використала такий механізм. Пізніше з'явилося безліч аналогів, що використовують як smarty-подібний синтаксис шаблонів (Twig або Quicky), так й інші підходи до синтаксису шаблонів.

Компіляція шаблонів дозволяє досягти продуктивності, порівнянної з продуктивністю PHP-шаблонів, написаних вручну[1]. Конструкції if/elseif/else/e передаються обробникові PHP, так що синтаксис виразу {if... } може бути натільки простим або складним, наскільки це потрібно. Можливо необмежене вкладення секцій, умов і т. д.

Приклад коду[ред.ред. код]

HTML-сторінка з тегами Smarty:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
  <title>{$title_text}</title>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>
 
<body> {* коментар, якого не буде в HTML коді *} 
 
<p>{$body_text}</p>
 
</body><!--коментар, який буде в HTML коді-->
</html>

Логіка роботи PHP-скрипта нижче:

define('SMARTY_DIR', 'smarty-2.6.22/');
require_once(SMARTY_DIR. 'Smarty.class.php');
 
$smarty = new Smarty();
$smarty->template_dir = './templates/';
$smarty->compile_dir = './templates/compile/';
$smarty->cache_dir = './templates/cache/';
$smarty->caching = false;
$smarty->error_reporting = E_ALL; // LEAVE E_ALL DURING DEVELOPMENT
$smarty->debugging = true;
 
$smarty->assign('title_text', 'TITLE: Приклад використання Smarty...');
$smarty->assign('body_text', 'BODY: Це текст, виведений ф-цією assign() ');
 
$smarty->display('index.tpl');

Посилання[ред.ред. код]

Виноски[ред.ред. код]