Smarty

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск
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');

Ссылки

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

Источник — «http://www.sbup.com/wiki/Smarty»
Личные инструменты

Served in 0.130 secs.