Smarty(官網)被視為 PHP 的「半官方」模板引擎,由 Andrei Zmievski 與 Monte Ohrt 開發,基於 GNU LGPL 授權釋出。它是目前最流行、功能最強大的 PHP 模板解決方案,核心優勢在於:
| 特性 | 說明 |
|---|---|
| 強大的表現邏輯 | 提供條件判斷 {if}、迴圈 {foreach}、{section} 等構造,語法簡單,設計師無需程式背景即可上手。 |
| 模板編譯機制 | 預設將模板編譯為相應 PHP 腳本,後續調用直接執行編譯後代碼,大幅降低開銷;檢測到模板變更自動重新編譯。 |
| 緩存支援 | 可選啟用頁面緩存,設定生存期(如 5 分鐘),期間跳過邏輯層執行與資料庫查詢,直接輸出靜態內容。 |
| 高度可配置與擴展 | 面向物件架構允許修改預設行為;內建屬性與方法提供極大靈活性,可定制定界符、目錄路徑、編譯/緩存策略等。 |
| 安全機制 | 限制模板中可執行的 PHP 函數、變量訪問範圍,防止設計師有意/無意破壞伺服器與應用數據。 |
批評者常指責模板引擎在表現層引入邏輯違背「完全分離」原則。Smarty 開發團隊認為:完全分離是理想,非現實。例如輸出 MySQL 結果集必須用到迭代邏輯。Smarty 採取務實折衷:僅提供表現層所需的最小邏輯集,保持語法簡潔,讓非程式出身的設計師也能駕馭。
所有主流模板方案遵循相同核心原則。學會 Smarty 的概念(編譯、緩存、定界符、表現邏輯、配置文件),即可輕鬆遷移至 Twig、Blade、Mustache 等現代模板引擎。本章著重通用概念,不盡照搬手冊細節。