Is Smarty right for me?
Although Smarty is known as a "Template Engine", it would be more accurately
described as a "Template/Presentation Framework." That is, it provides the
programmer and template designer with a wealth of tools to automate tasks
commonly dealt with at the presentation layer of an application. I stress the
word Framework because Smarty is not a simple tag-replacing template
engine. Although it can be used for such a simple purpose, its focus is on
quick and painless development and deployment of your application, while
maintaining high-performance, scalability, security and future growth.
Here are some of the more notable features of Smarty:
Caching: Smarty provides fine-grained caching features for caching all
or parts of a rendered web page, or leaving parts uncached. Programmers can
register template functions as cacheable or non-cachable, group cached pages
into logical units for easier management, etc.
Configuration Files: Smarty can assign variables pulled from
configuration files. Template designers can maintain values common to several
templates in one location without intervention from the programmer, and config
variables can easily be shared between the programming and presentation
portions of the application.
Security: Templates do not contain PHP code. Therefore, a template
designer is not unleashed with the full power of PHP, but only the subset of
functionality made available to them from the programmer (application code.)
Easy to Use and Maintain:
Web page designers are not dealing with PHP code syntax, but instead an
easy-to-use templating syntax not much different than plain HTML. The templates
are a very close representation of the final output, dramatically shortening the
design cycle.
Variable Modifiers: The content of assigned variables can easily be
adjusted at display-time with modifiers, such as displaying in all upper-case,
html-escaped, formatting dates, truncating text blocks, adding spaces between
characters, etc. Again, this is accomplished with no intervention from the
programmer.
Template Functions: Many functions are available to the template
designer to handle tasks such as generating HTML code segments (dropdowns,
tables, pop-ups, etc.), displaying content from other templates in-line,
looping over arrays of content, formatting text for e-mail output, cycling
though colors, etc.
Filters: The programmer has complete control of template output and compiled
template content with pre-filters, post-filters and output-filters.
Resources: Templates can be pulled from any number of sources by creating new
resource handlers, then using them in the templates.
Plugins: Almost every aspect of Smarty is controlled through the use of
plugins. They are generally as easy as dropping them into the plugin directory
and then mentioning them in the template or using them in the application code.
Many user-community contributions are also available. (See the plugins section
of the forum and wiki.)
Add-ons: Many user-community contributed Add-ons are available such as
Pagination, Form Validation, Drop Down Menus, Calander Date Pickers, etc. These
tools help speed up the development cycle, there is no need to re-invent the
wheel or debug code that is already stable and ready for deployment. (see the
Add-ons section of the forum and wiki.)
Debugging: Smarty comes with a built-in debugging console so the
template designer can see all of the assigned variables and the programmer can
investigate template rendering speeds.
Compiling: Smarty compiles templates into PHP code behind the scenes,
eliminating run-time parsing of templates.
Performance: Smarty performs extremely well, despite its vast feature
set. Most of Smarty's capabilities lie in plugins that are loaded on-demand.
Smarty comes with numerous presentation tools, minimizing your application code
and resulting in quicker, less error-prone application development/deployment.
Smarty templates get compiled to PHP files internally (once), eliminating costly
template file scans and leveraging the speed of PHP op-code accelerators.
So is Smarty right for you? What it comes down to is using the right tool for
the job. If you want simple variable replacement, you might want to look at
something simpler or even roll your own. If you want a robust templating
framework with numerous tools to assist you as your application evolves into
the future, Smarty is likely a good choice.
|