Smarty is a web template system written in PHP. Smarty is primarily promoted as a tool for separation of concerns. Smarty generates web content by the placement of special Smarty tags within a document. These tags are processed and substituted with other code.
Tags are directives for Smarty that are enclosed by template delimiters. These directives can be variables, denoted by a dollar sign ($), functions, logical or loop statements. Smarty allows PHP programmers to define custom functions that can be accessed using Smarty tags.
Smarty is intended to simplify compartmentalization, allowing the presentation of a web page to change separately from the back-end. Ideally, this eases the costs and efforts associated with software maintenance.

Features

Smarty supports several high-level template programming features, including:

Control flow statements, foreach
if, elseif, else statements
variable modifiers – For example {$variable|nl2br}
functions – For example {html_select_date start_year=’-5′ end_year=’+5′}
output filters
possibility to create own modifiers / functions / output filters
advanced caching of pages

along with other features. There are other template engines and frameworks that also support these features. Smarty templates can be incorporated into existing PHP web applications. It is used where a web application or a website has a theme system built into it, where the templates can be changed from theme to theme.