詳細介紹PHP模板引擎Smarty_PHP教程

來源:互聯網
上載者:User
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支援的。

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


http://www.bkjia.com/PHPjc/445769.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/445769.htmlTechArticlePHP模板引擎, Smarty, 它不同於其他的模板引擎,比如FastTemplate或者patTemplate,其中主要原因就是 Smarty會將模板轉化成PHP指令碼,並剔除每次...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.