Smarty

Smarty
Smarty
Smarty-logo-orange.gif
Тип

Компилирующий обработчик шаблонов

Разработчик

New Digital Group, Inc.

Операционная система

Кроссплатформенное программное обеспечение

Последняя версия

3.1.11 (30 июня 2012 г.)

Лицензия

GNU LGPL

Сайт

www.smarty.net

Smartyкомпилирующий обработчик шаблонов для PHP, один из инструментов, позволяющих отделить прикладную логику и данные от представления в духе концепции Model-view-controller.

Язык шаблонов Smarty расширяет HTML smarty-тегами, встраиваемыми в документ. Эти теги могут представлять собой PHP-переменные (возможно, снабжённые модификаторами, напр. {$variable|nl2br}), функции или базовые конструкции структурного программирования, такие как {if …}{else}{/if}.

Одно из предназначений Smarty — это отделение логики приложения от представления. Шаблоны, тем не менее, могут содержать в себе логику, но это должна быть логика представления данных. Она должна решать такие задачи, как подключение других шаблонов, чередующаяся окраска строчек в таблице, приведение букв к верхнему регистру, циклический проход по массиву для его отображения и т. п. Сама по себе библиотека Smarty не принуждает разделять логику приложения и представление — корректная дисциплина использования веб-шаблонов остаётся задачей разработчика.

Smarty — первая шаблонная библиотека, использующая механизм кэширования байт-кода.

Содержание

Возможности

Smarty позволяет:

  • Создавать пользовательские функции и модификаторы.
  • Использовать настраиваемые разделители тегов шаблона: {}, , и т. д.
  • Возможность включения PHP-кода прямо в шаблон.
  • Пользовательские функции кэширования.
  • Использование компонентной архитектуры.

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

Механизм действия

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

Компиляция шаблонов позволяет достичь производительности, сравнимой с производительностью PHP-шаблонов, написанных вручную[1]. Конструкции if/elseif/else/endif передаются обработчику 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');

Критика

Smarty (и основанные на подобном подходе библиотеки) обычно критикуют с двух направлений. Сторонники использования в качестве языка шаблонов подмножества PHP считают, что поскольку «он, в основном, предоставляет интерфейс к PHP с использованием нового синтаксиса» и поэтому не дает особых преимуществ.[2] Сторонники же XSLT находят, что Smarty оставляет слишком широкий простор для смешения логики и представления, что значительно затрудняет редактирование smarty-шаблонов сторонними разработчиками и их повторное использование.[3].

Аналоги

Начиная с 2008 года доступен последователь синтаксиса Smarty, шаблонизатор Quicky (Документация) основной отличительной особенностью которого является иной подход к реализации разбора шаблонов (который по заверениям автора существенно быстрее работает) и расширение уже привычного многим синтаксиса: поддержка хелперов (функций, объявленных прямо в шаблоне), наличие «магических» констант циклов, упрощенный синтаксис присвоения значений переменных без использования {math}, компилируемые управляющие конструкции.

Интересным развитием идей Smarty является библиотека Twig, которую развивает и поддерживает Fabien Potencier, ведущий разработчик и идеолог Symfony (см. также его статью-сравнительный обзор PHP-шаблонизаторов: часть 1/перевод, часть 2/перевод).

Smarty-подобный синтаксис имеют также такие обработчики шаблонов, как Dwoo или обработчик, встроенный в eZ Publish / ezComponents (англ.).

До 2007 года также развивался «облегчённый» форк Smarty — Template Lite (в первых версиях Smarty Light).

Ссылки

Примечания


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "Smarty" в других словарях:

  • Smarty — Entwickler Monte Ohrt, Messju Mohr Aktuelle Version 3.1.4 (19. Oktober 2011) Betriebssystem plattformunabhängig Programmier­sprache PHP …   Deutsch Wikipedia

  • Smarty — Desarrollador Monte Ohrt, Messju Mohr http://www.smarty.net/ Información general Última versión estable 3.1.4 ( …   Wikipedia Español

  • Smarty — es un motor de plantillas para PHP, cuyo objetivo es separar el contenido de la presentación en una página web, se encuentra bajo la licencia GPL por lo que puede ser usado libremente. Es común que en grandes proyectos el rol de diseñador gráfico …   Enciclopedia Universal

  • smarty — ☆ smarty [smart′ēpants΄smart′ē ] n. pl. smarties Informal SMART ALECK: also smarty pants [smart′ēpants΄] …   English World dictionary

  • Smarty — Infobox Software name = Smarty Templates developer = Monte Ohrt, Messju Mohr latest release version = 2.6.20 latest release date = 15th Aug 2008 genre = Template Engine license = LGPL website = [http://www.smarty.net/ www.smarty.net] Smarty is a… …   Wikipedia

  • Smarty — Pour les articles homonymes, voir Smarty (homonymie). Développeur Monte Ohrt, Messju Mohr …   Wikipédia en Français

  • smarty —    Used mainly in the USA to someone who is ostentatiously displaying smartness, especially if he is doing so by contradicting the speaker. ‘Smarty’ is a relatively mild term. An American who is more irate is likely to use: smart aleck, smartass …   A dictionary of epithets and terms of address

  • smarty — n. a cocky person. (Also a term of address.) □ Well, if you’re such a smarty, why aren’t you rich? □ Okay, smarty, do it yourself …   Dictionary of American slang and colloquial expressions

  • smarty — n. (pl. ies) colloq. 1 a know all; a smart alec. 2 a smartly dressed person; a member of a smart set. Phrases and idioms: smarty boots (or pants) = SMARTY 1. Etymology: SMART …   Useful english dictionary

  • smarty — Synonyms and related words: boldface, brazenface, chutzpanik, hussy, know it all, malapert, minx, pup, puppy, saucebox, smart, smart aleck, smart ass, smarty pants, swaggerer, upstart, whippersnapper, wise guy, wise ass, wiseacre, wisecracker,… …   Moby Thesaurus


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»