Smarty教程


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代碼到你的模板文件中,雖然這可能並不需要(不推薦)

  • 內建緩存支持

  • 獨立模板文件

  • 可自定義緩存處理函數

  • 插件體系結構