Smarty
Стиль этой статьи неэнциклопедичен или нарушает нормы русского языка. Статью следует исправить согласно стилистическим правилам Википедии.
|
Smarty | |
Файл:Smarty-logo-orange.gif | |
Тип | Компилирующий обработчик шаблонов |
Разработчик | New Digital Group, Inc. |
ОС | Кроссплатформенное программное обеспечение |
Версия | 2.6.26 (18 июня 2009 г.) |
Тестовая версия | 3.0 Beta 7 (17 января 2010 г.) |
Лицензия | GNU LGPL |
Сайт | www.smarty.net |
Smarty — компилирующий обработчик шаблонов для PHP, один из инструментов, позволяющих отделить прикладную логику и данные от представления в духе концепции Model-view-controller.
Например, создаётся страница, которая показывает газетную статью. Название статьи, автор и сама статья — элементы, которые не содержат никакой информации о том, как они будут представлены. Их передают в Smarty из приложения, а верстальщик шаблона редактирует шаблоны и использует комбинацию тегов HTML и тегов шаблона, чтобы отформатировать представление этих элементов (таблицы HTML, фоновые цвета, размеры шрифта, стиля и т. д.). Однажды программист захочет изменить способ хранения статьи (сделать изменения в логике приложения). Это изменение не вызовет изменений в шаблонах. Содержание будет все еще передаваться в шаблон таким же самым способом. Аналогично, если верстальщик захочет полностью перепроектировать шаблоны, это не потребует никаких изменений в прикладной логике.
Одно из предназначений Smarty — это отделение логики приложения от представления. Конечно же, шаблоны могут содержать в себе логику, но лишь при условии, что эта логика необходима для правильного представления данных. Такие задачи, как подключение других шаблонов, чередующаяся окраска строчек в таблице, приведение букв к верхнему регистру, циклический проход по массиву для его отображения и т. д. — всё это является примером логики представления. Не следует думать, что Smarty заставляет разделять логику приложения и представление. Smarty не видит разницы между этими вещами, так что помещать или не помещать логику приложения в шаблоны — решать вам. В случае, если в шаблоне вообще не должно быть логики, можно ограничиться использованием чистого текста и переменных.
Одна из уникальных возможностей Smarty — компилирование шаблонов. Это означает, что Smarty читает файлы шаблонов и создаёт PHP-код на их основе. Код создаётся один раз и потом только выполняется. Поэтому нет необходимости обрабатывать файл шаблона для каждого запроса и каждый шаблон может пользоваться всеми преимуществами таких кэшируюших решений, как eAccelerator или PHP Accelerator.
Некоторые особенности Smarty:
- Высокая скорость.
- Высоко эффективен, т.к. всю рутинную работу делает обработчик PHP.
- Компиляция в один проход.
- Перекомпиляция только изменившихся шаблонов.
- Масштабируемость - имеется возможность создавать пользовательские функции и модификаторы.
- Настраиваемые разделители тегов шаблона: {}, , и т. д.
- Конструкции if/elseif/else/endif передаются обработчику PHP, так что синтаксис выражения {if …} может быть настолько простым или сложным, в такой степени в какой это требуется.
- Неограниченное вложение секций, условий и т. д.
- Возможность включения PHP-кода прямо в шаблон.
- Встроенный механизм кэширования.
- Произвольные источники шаблонов.
- Пользовательские функции кэширования.
- Компонентная архитектура.
Пример кода
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');
Ссылки
ca:Smarty da:Smarty de:Smarty en:Smarty es:Smarty et:Smarty fi:Smarty fr:Smarty hu:Smarty id:Smarty it:Smarty ja:Smarty lv:Smarty ms:Smarty pl:Smarty pt:Smarty sr:Смарти vi:Smarty zh:Smarty
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....