Smarty是一個php模板引擎。更準確的說,它分開了邏輯程式和外在的內容,提供了一種易於管理的方法。可以描述為應用程式員和美工扮演了不同的角色,因為在大多數情況下 ,他們不可能是同一個人。例如,你正在建立一個用於瀏覽新聞的網頁,新聞標題,標籤欄,作者和內容等都是內容要素,他們並不包含應該怎樣去呈現。在Smarty的程式裡,這些被忽略了。模板設計者們編輯模板,組合使用html標籤和模板標籤去格式化這些要素的輸出(html表格,背景色,字型大小,樣式表,等等)。有一天程式員想要改變文章檢索的方式(也就是程式邏輯的改變)。這個改變不影響模板設計者,內容仍將準確的輸出到模板。同樣的,哪天美工吃多了想要完全重做介面,也不會影響到程式邏輯。因此,程式員可以改變邏輯而不需要重新構建模板,模板設計者可以改變模板而不影響到邏輯。
現在簡短的說一下什麼是smarty不做的。smarty不嘗試將邏輯完全和模板分開。如果邏輯程式嚴格的用於頁面表現,那麼它在模板裡不會出現問題。有個建議:讓應用程式邏輯遠離模板, 頁面表現邏輯遠離應用程式邏輯。這將在以後使內容更容易管理,程式更容易升級。
Smarty的特點之一是"模板編譯"。意思是Smarty讀取模板檔案然後用他們建立php指令碼。這些指令碼建立以後將被執行。因此並沒有花費模板檔案的語法解析,同時每個模板可以享受到諸如Zend加速器(http://www.zend.com) 或者PHP加速器(http://www.php-accelerator.co.uk)。這樣的php編譯器快取記憶體解決方案。
Smaty的一些特點:
非常非常的快!
用php分析器乾這個苦差事是有效的
不需要多餘的模板語法解析,僅僅是編譯一次
僅對修改過的模板檔案進行重新編譯
可以編輯'自定義函式'和自定義'變數',因此這種模板語言完全可以擴充套件
可以自行設定模板定界符,所以你可以使用{}, {{}}, <!--{}-->, 等等
諸如 if/elseif/else/endif 語句可以被傳遞到php語法解析器,所以 {if ...} 表示式是簡單的或者是復合的,隨你喜歡啦
如果允許的話,section之間可以無限巢狀
引擎是可以客製化的.可以內嵌php程式碼到你的模板檔案中,雖然這可能並不需要(不推薦)
內建快取支援
獨立模板檔案
可自定義快取處理常式
外掛體系結構