程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 詳細介紹PHP模板引擎Smarty

詳細介紹PHP模板引擎Smarty

編輯:關於PHP編程

PHP模板引擎,Smarty,它不同於其他的模板引擎,比如FastTemplate或者patTemplate,其中主要原因就是 Smarty會將模板轉化成PHP腳本,並剔除每次使用該模板時都會出現在解析環節裡的用來控制和錯誤檢驗的附加碼。

這個功能使Smarty在大型應用和高流量網站上有優異的表現。 Smarty除了模板編譯還有很多其他的突出特性,我們會在後面詳細的討論。

首先,我們來揭秘模板編譯。

“模板的編譯”是什麼意思?網頁需要做什麼樣的編譯?編譯不是C++和Java也要做嗎?是的,但是這裡的編譯會稍有不同。 Smarty將你的模板解析,然後轉換成PHP腳本,而不是二進制碼,像在一般的編程中做的那樣。這樣,當你的網頁被浏覽時,Smarty直接讀取PHP 腳本文件,而不是模板本身,這樣就節省了再次解析的時間。

Smarty在決定何時編譯上也很智能,他只在你對網頁有實際的更改的時候才會重新編譯,所以你不需要擔心手動編譯會出現問題。這樣做的好處就是你不需要了解任何關於PHP腳本和編碼的知識。這些都是在後天操作的,所以如果你的模板設計師甚至都不需要知道Smarty是一個“模板編譯引擎”。

Smarty也以自動緩存模板輸出而著名。

Smarty將模板的輸出內容緩存,這樣就省下了在從數據源重新取回數據時的系統支出。數據源通常都是外部的,而且很慢,所以也經常是你的應用的瓶頸,如同遠程數據源一樣。Smarty將你模板的輸出連同從數據源取得的數據一起緩存,這樣並不是每次你的網頁被訪問時你就去連接數據源。如果你有一個反應慢的數據源服務器或者對數據源有多種請求,這種緩存功能會大大提升網頁的性能。

當然,有時你並不像讓模板的輸出被緩存,比如說證券報價機或者你不停的修改你的數據源並期望立刻在網頁上反應出這些變化。這些都沒問題!Smarty同樣允許你定義哪些需要緩存哪些不需要。事實上你可以將緩存和沒有緩存的內容放在一個頁面上,因為Smarty可以准確的定義什麼可以被緩存(比如萬年不變的導航欄)和什麼不可以被緩存(比如網頁底部的證券機)。你也可以設定緩存內容的有效期,這樣模板的內容只會被緩存一段時間。這樣你就可以在實時更新的大量資訊和更快速的網站體驗中找到平衡。

有一點需要指出的是,這種緩存功能和Zend Cache或者其他的PHP加速器完全不一樣。

類似Zend Cache的緩存工具都是將PHP腳本編譯後產生的字節碼緩存起來,而Smarty緩存的是你的模板的輸出(其實就是一種PHP腳本)。因此,Smarty可以與Zend Cache並肩作戰。通過基准測試已經發現這是一種完美的解決方案。

正如引擎創作者所說:當和PHP加速器一起使用時,Smarty的表現確實有所提升。 Smarty也提供變量修改功能。你可以把字符串大寫、切割、查找和替換。變量修改器簡化了編程的過程,繞開了程序員經常使用的專業語法。這樣模板設計者就會對模板變量的格式有更好的控制,雖然他首先得知道哪些變量修改器是可用的。這是個很有用的功能,因為句法變得簡潔,而且不是程序員的人也可以使用它。

Smarty也在你的模板中提供了很多內置的和習慣使用的函數。

這些函數就像模板的應用編程接口,除了習慣使用函數可以被修改而內置函數不能。這些函數可以讓4F60實現條件輸出(使用if語句),動態循環迭代(使用 foreach或section語句),讀取config文件等等功能。

過濾器 Smarty可以將過濾器分類,讓你可以在模板被編譯之前或者之後運行過濾器。預過濾器在你的模板運行前使用,後置過濾器在模板被編譯後使用,輸出過濾器會過濾模板的輸出結果。為什麼使用過濾器?你可能會問。預過濾器可以去掉你不想要的內容,確保你不想要的內容不會被編譯。後置過濾器可以再模板被編譯後加入附加的信息,比如創建時間。輸出過濾器可以讓你修改模板的輸出,比如隱藏掉所有的電郵地址以垃圾郵件的騷擾。

Config 文件 Config文件是可以儲存模板的全局變量的配置文件。這樣你就能把一些影響到所有模板的全局變量集中儲存在一個地方。一個典型的例子就是所有模板的配色方案。如果配色方案需要修改,模板設計者只需要改變配置文件中的值。這樣他們就不必一個一個的修改每一個模板。

插件 Smarty插件架構自2.0版本就出現了,它能讓Smarty更加用戶化。前面討論的預過濾器、後置過濾器等都是可用的插件類型而已。其他的插件類型包括修改器、控制模塊、編譯器等。使用插件,你可以制作自己的模板函數,變量修改器和過濾器。你還可以使用資源插件改變Smarty的讀取數據格式(默認是展平文件)。

通過資源插件,你可以將你的模板保存在數據庫裡,通過一定的接口取回數據。結束語將Smarty的模板編譯功能和PHP固有的效率結合在一起,你就擁有了絕對的速度優勢。使用設計優良的插件構架,Smarty還有擴展的函數功能,包括模板功能和變量修改器。速度和函數性的提高並沒有影響Smarty的親和度,事實上,Smarty非常容易上手。Smarty同時也配備了在線共享文檔。你可以從Smarty Website上下載。

Smarty的作者之一,Andrei Zmievski,也是PHP發展小組的成員,他會盡量保證Smarty緊跟PHP的發展。所以你大可放心:PHP的任何改版都會被Smarty支持的。

希望通過以上內容的介紹,能夠給你帶來幫助。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved