Smarty是一個php模板引擎。更準(zhǔn)確的說,它分開了邏輯程序和外在的內(nèi)容,提供了一種易于管理的方法。可以描述為應(yīng)用程序員和美工扮演了不同的角色,因為在大多數(shù)情況下 ,他們不可能是同一個人。例如,你正在創(chuàng)建一個用于瀏覽新聞的網(wǎng)頁,新聞標(biāo)題,標(biāo)簽欄,作者和內(nèi)容等都是內(nèi)容要素,他們并不包含應(yīng)該怎樣去呈現(xiàn)。在Smarty的程序里,這些被忽略了。模板設(shè)計者們編輯模板,組合使用html標(biāo)簽和模板標(biāo)簽去格式化這些要素的輸出(html表格,背景色,字體大小,樣式表,等等)。有一天程序員想要改變文章檢索的方式(也就是程序邏輯的改變)。這個改變不影響模板設(shè)計者,內(nèi)容仍將準(zhǔn)確的輸出到模板。同樣的,哪天美工吃多了想要完全重做界面,也不會影響到程序邏輯。因此,程序員可以改變邏輯而不需要重新構(gòu)建模板,模板設(shè)計者可以改變模板而不影響到邏輯。
現(xiàn)在簡短的說一下什么是smarty不做的。smarty不嘗試將邏輯完全和模板分開。如果邏輯程序嚴(yán)格的用于頁面表現(xiàn),那么它在模板里不會出現(xiàn)問題。有個建議:讓應(yīng)用程序邏輯遠離模板, 頁面表現(xiàn)邏輯遠離應(yīng)用程序邏輯。這將在以后使內(nèi)容更容易管理,程序更容易升級。
Smarty的特點之一是"模板編譯"。意思是Smarty讀取模板文件然后用他們創(chuàng)建php腳本。這些腳本創(chuàng)建以后將被執(zhí)行。因此并沒有花費模板文件的語法解析,同時每個模板可以享受到諸如Zend加速器(http://www.zend.com) 或者PHP加速器(http://www.php-accelerator.co.uk)。這樣的php編譯器高速緩存解決方案。
Smaty的一些特點:
非常非常的快!
用php分析器干這個苦差事是有效的
不需要多余的模板語法解析,僅僅是編譯一次
僅對修改過的模板文件進行重新編譯
可以編輯'自定義函數(shù)'和自定義'變量',因此這種模板語言完全可以擴展
可以自行設(shè)置模板定界符,所以你可以使用{}, {{}}, <!--{}-->, 等等
諸如 if/elseif/else/endif 語句可以被傳遞到php語法解析器,所以 {if ...} 表達式是簡單的或者是復(fù)合的,隨你喜歡啦
如果允許的話,section之間可以無限嵌套
引擎是可以定制的.可以內(nèi)嵌php代碼到你的模板文件中,雖然這可能并不需要(不推薦)
內(nèi)建緩存支持
獨立模板文件
可自定義緩存處理函數(shù)
插件體系結(jié)構(gòu)