Smarty

Ця стаття містить текст, що не відповідає енциклопедичному стилю. Будь ласка, допоможіть удосконалити цю статтю, погодивши стиль викладу зі стилістичними правилами Вікіпедії. Можливо, сторінка обговорення містить зауваження щодо потрібних змін. (квітень 2010)
У Вікіпедії є статті про інші значення цього терміна: Smart.
Smarty
Тип компілюючий обробник шаблонів
Розробник New Digital Group, Inc.
Стабільний випуск 3.1.11 (20 червня 2012; 11 років тому (2012-06-20))
Операційна система Кросплатформенне програмне забезпечення
Мова програмування PHP[1]
Ліцензія GNU LGPL
Репозиторій github.com/smarty-php/smarty
Вебсайт www.smarty.net

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

Можливості

Smarty дозволяє:

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

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

Механізм дії

Smarty читає файли шаблонів та створює PHP-код на їх основі. Код створюється один раз і потім лише виконується тому немає необхідності обробляти файл шаблона для кожного запиту та кожний шаблон може користуватися всіма перевагами розширень PHP для кешування байт-коду, таких як eAccelerator [Архівовано 3 травня 2019 у Wayback Machine.] або PHP Accelerator [Архівовано 15 березня 2016 у Wayback Machine.]. Smarty став, ймовірно, першою шаблонною бібліотекою, яка використала такий механізм. Пізніше з'явилося безліч аналогів, що використовують як smarty-подібний синтаксис шаблонів (Twig [Архівовано 1 вересня 2011 у Wayback Machine.] або Quicky [Архівовано 7 січня 2014 у Wayback Machine.]), так й інші підходи до синтаксису шаблонів.

Компіляція шаблонів дозволяє досягти продуктивності, порівнянної з продуктивністю PHP-шаблонів, написаних вручну[2]. Конструкції 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-5" />
</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');

Див. також

Примітки

  1. The smarty Open Source Project on Open Hub: Languages Page — 2006.
    d:Track:Q124688
  2. Fabien Potencier. Templating Engines in PHP [Архівовано 17 січня 2013 у Wayback Machine.] (переклад [Архівовано 17 лютого 2012 у Wayback Machine.]), Templating engines in PHP — Follow-Up [Архівовано 4 грудня 2012 у Wayback Machine.] (переклад [Архівовано 8 лютого 2012 у Wayback Machine.])

Посилання

  • Офіційний сайт Smarty [Архівовано 27 травня 2010 у Wayback Machine.] (англ.)
  • Посібник по Smarty [Архівовано 18 жовтня 2010 у Wayback Machine.] (укр.)
  • російськомовна документація до smarty та php [Архівовано 16 квітня 2010 у Wayback Machine.] (рос.)
Ця стаття потребує додаткових посилань на джерела для поліпшення її перевірності. Будь ласка, допоможіть удосконалити цю статтю, додавши посилання на надійні (авторитетні) джерела. Зверніться на сторінку обговорення за поясненнями та допоможіть виправити недоліки.
Матеріал без джерел може бути піддано сумніву та вилучено.
(січень 2018)
Інформаційні технології Це незавершена стаття про інформаційні технології.
Ви можете допомогти проєкту, виправивши або дописавши її.