What is smarty?
Smarty bisa dikenal sebagai PHP Based Template Engine, dimana selama ini programming dengan menggunakan template based lebih mudah dimengerti oleh programmer itu sendiri, programmer lain ataupun web desainer yang bekerja dalam satu team. Smarty dibuat untuk memfasilitasi suatu aplikasi yang terpisah dengan kode-kode programming.
Konsep Three-Tier Application Model
Three-Tier Application merupakan model lain daripada client/server arsitektur, dimana terdapat layer-layer yang saling berhubungan sehingga akan membentuk suatu aplikasi yang kompleks dan mudah dimaintain tetapi secara logic mempunya tugas-tugas yang berbeda. 3 layer itu adalah :
- Presentation/User Interface Layer, layer ini merupakan layer yang teratas atau terdepan yang langsung berhubungan dengan user, layer ini menterjemahkan suatu fungsi logika dari layer kedua. Layer ini berjalan pada client sehingga bisa disebut application client.
- Business Logic Layer, pada layer ini semua business logic ditempatkan di sini termasuk aritmatik, kalkulasi, proses data, variabel dll. Proses-proses tersebut dijalankan di server sehingga bisa disebut application server.
- Database Layer, semua data yang diolah di layer kedua akan ditampung di layer ini atau bisa juga data yang disimpan dalam database akan digunakan oleh middle tier.

Gambar model three-tier (diambil dari wikipedia)
Jadi, apa hubungannya smarty dengan konsep three-tier? Smarty digunakan pada layer Presentation dikarenakan di dalamnya tidak terdapat suatu business logic yang kompleks, kalaupun ada, hanyalah sebuah logika yang sederhana, misalnya is, looping, dll. Modul-modul tersebut dapat diubah tetapi tidak mengganggu modul-modul yang lain.
Seorang web desainer dapat secara bebas mengubah tampilan tanpa harus mengetahui script programming itu sendiri sendiri. Suatu aplikasi web dapat dibuat secara paralel antara web programmer dan web desainer atau web programmer membuat terlebih dahulu script, baru kemudian template dibuat ataupun template yang pertama kali dibuat kemudian menyusul script-nya.
Keunggulan Smarty
Beberapa keunggulan smarty adalah :
- 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.
Smarty dapat didownload di official site-nya di http://smarty.php.net berikut cara instalasi dan dokumentasinya.
Sumber : smarty.php.net