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代碼到你的範本檔中,雖然這可能並不需要(不推薦)
-
內建緩存支持
-
獨立範本檔
-
可自定義緩存處理函數
-
插件體系結構