2019年8月13日 星期二

Smarty 1 基礎教程

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





沒有留言:

張貼留言

如何判斷現在FORM是在 insert mode? 還是 update mode?

只要用  if (empty({primary_key})) 就可以知道是否為新增模式了。 如果 {promary_key} 是空白的,那麼就是在新增模式;反之,就是更新模式。 以上。