Smarty - это компилирующий обработчик шаблонов для PHP. Говоря более четко, он предоставляет один из инструментов, которые позволяет добиться отделения прикладной логики и данных от представления. Это очень удобно в ситуациях, когда программист и верстальщик шаблона - различные люди.
Например, скажем, вы создаете страницу, которая показывает газетную статью.
Название статьи, автор и сама статья - элементы, которые не содержат никакой информации о том, как они будут представлены. Их передают в Smarty из приложения.
Затем верстальщик шаблона редактирует шаблоны и использует комбинацию тэгов HTML и тэгов шаблона, чтобы отформатировать представление этих переменных, содержащих элементы типа таблиц HTML, фоновых цветов, размеров шрифта, стилей, SVG и т.д.).
Однажды программист захочет изменить способ хранения статьи, то есть внести изменения в логику приложения. Это изменение не вызовет изменений в шаблонах. Содержание будет все еще передаваться в шаблон таким же самым способом.
Аналогично, если верстальщик захочет полностью перепроектировать шаблоны, это не потребует никаких изменений в прикладной логике.
Таким образом, программист может вносить изменения в прикладную логику без необходимости изменения шаблонов, а дизайнер шаблонов может вносить изменения в шаблоны без вреда для прикладной логики.
Одно из предназначений Smarty - это отделение логики приложения от представления.
Конечно же, шаблоны могут содержать в себе логику, но лишь при условии, что эта логика необходима для правильного представления данных. Такие задачи, как подключение других шаблонов, чередующаяся окраска строчек в таблице, приведение букв к верхнему регистру, циклический проход по массиву для его отображения и т.д. - всё это примеры логики представления.
Тем не менее, не следует полагать, что Smarty заставляет вас разделять прикладную логику и логику представления. Smarty не видит разницы между этими вещами, так что переносить прикладную логику в шаблоны вы можете на свой страх и риск.
Если же вы считаете, что в шаблоне вообще не должно быть логики, вы можете ограничиться использованием чистого текста и переменных.
Одна из уникальных возможностей Smarty - компилирование шаблонов. Это означает, что Smarty читает файлы шаблонов и создает PHP-код на их основе. Код создаётся один раз и потом только выполняется. Поэтому нет необходимости в медленной обработке файл шаблона для каждого запроса. Каждый шаблон может пользоваться всеми преимуществами таких компиляторов PHP и кэшируюших решений, как eAccelerator, ionCube, mmCache, Zend Accelerator и прочих.
Некоторые особенности Smarty:
Он очень быстр.
Он эффективен, так как обработчик PHP делает за него грязную работу.
Никакой лишней обработки шаблонов, они компилируются только один раз.
Перекомпилируются только те шаблоны, которые изменились.
Вы можете легко создавать собственные пользовательские функции и модификаторы переменных, что делает язык шаблонов чрезвычайно расширяемым.
Настраиваемые {разделители} тэгов шаблона, то есть вы можете использовать
{$foo}
,{{$foo}}
,<!--{$foo}-->
и т.д.Конструкции
{if}..{elseif}..{else}..{/if}
передаются обработчику PHP, так что синтаксис выражения{if...}
может быть настолько простым или сложным, насколько вам угодно.Допустимо неограниченное вложение секций, условий и т.д.
Существует возможность включения PHP-кода прямо в ваш шаблон, однако обычно в этом нет необходимости (и это не рекоммендуется), так как движок весьма гибок и расширяем.
Встроенный механизм кэширования.
Произвольные источники шаблонов.
Пользовательские функции кэширования.
Компонентная архитектура.