自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳細(xì)介紹PHP模板引擎Smarty

開(kāi)發(fā) 后端
本文介紹的是PHP模版引擎Smarty,介紹的很詳細(xì),適合初學(xué)者閱讀。希望能夠?qū)δ阌袔椭?,一起?lái)看。

PHP模板引擎,Smarty,它不同于其他的模板引擎,比如FastTemplate或者patTemplate,其中主要原因就是 Smarty會(huì)將模板轉(zhuǎn)化成PHP腳本,并剔除每次使用該模板時(shí)都會(huì)出現(xiàn)在解析環(huán)節(jié)里的用來(lái)控制和錯(cuò)誤檢驗(yàn)的附加碼。

這個(gè)功能使Smarty在大型應(yīng)用和高流量網(wǎng)站上有優(yōu)異的表現(xiàn)。 Smarty除了模板編譯還有很多其他的突出特性,我們會(huì)在后面詳細(xì)的討論。

首先,我們來(lái)揭秘模板編譯。

“模板的編譯”是什么意思?網(wǎng)頁(yè)需要做什么樣的編譯?編譯不是C++和Java也要做嗎?是的,但是這里的編譯會(huì)稍有不同。 Smarty將你的模板解析,然后轉(zhuǎn)換成PHP腳本,而不是二進(jìn)制碼,像在一般的編程中做的那樣。這樣,當(dāng)你的網(wǎng)頁(yè)被瀏覽時(shí),Smarty直接讀取PHP 腳本文件,而不是模板本身,這樣就節(jié)省了再次解析的時(shí)間。

Smarty在決定何時(shí)編譯上也很智能,他只在你對(duì)網(wǎng)頁(yè)有實(shí)際的更改的時(shí)候才會(huì)重新編譯,所以你不需要擔(dān)心手動(dòng)編譯會(huì)出現(xiàn)問(wèn)題。這樣做的好處就是你不需要了解任何關(guān)于PHP腳本和編碼的知識(shí)。這些都是在后天操作的,所以如果你的模板設(shè)計(jì)師甚至都不需要知道Smarty是一個(gè)“模板編譯引擎”。

Smarty也以自動(dòng)緩存模板輸出而著名。

Smarty將模板的輸出內(nèi)容緩存,這樣就省下了在從數(shù)據(jù)源重新取回?cái)?shù)據(jù)時(shí)的系統(tǒng)支出。數(shù)據(jù)源通常都是外部的,而且很慢,所以也經(jīng)常是你的應(yīng)用的瓶頸,如同遠(yuǎn)程數(shù)據(jù)源一樣。Smarty將你模板的輸出連同從數(shù)據(jù)源取得的數(shù)據(jù)一起緩存,這樣并不是每次你的網(wǎng)頁(yè)被訪問(wèn)時(shí)你就去連接數(shù)據(jù)源。如果你有一個(gè)反應(yīng)慢的數(shù)據(jù)源服務(wù)器或者對(duì)數(shù)據(jù)源有多種請(qǐng)求,這種緩存功能會(huì)大大提升網(wǎng)頁(yè)的性能。

當(dāng)然,有時(shí)你并不像讓模板的輸出被緩存,比如說(shuō)證券報(bào)價(jià)機(jī)或者你不停的修改你的數(shù)據(jù)源并期望立刻在網(wǎng)頁(yè)上反應(yīng)出這些變化。這些都沒(méi)問(wèn)題!Smarty同樣允許你定義哪些需要緩存哪些不需要。事實(shí)上你可以將緩存和沒(méi)有緩存的內(nèi)容放在一個(gè)頁(yè)面上,因?yàn)镾marty可以準(zhǔn)確的定義什么可以被緩存(比如萬(wàn)年不變的導(dǎo)航欄)和什么不可以被緩存(比如網(wǎng)頁(yè)底部的證券機(jī))。你也可以設(shè)定緩存內(nèi)容的有效期,這樣模板的內(nèi)容只會(huì)被緩存一段時(shí)間。這樣你就可以在實(shí)時(shí)更新的大量資訊和更快速的網(wǎng)站體驗(yàn)中找到平衡。

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

類似Zend Cache的緩存工具都是將PHP腳本編譯后產(chǎn)生的字節(jié)碼緩存起來(lái),而Smarty緩存的是你的模板的輸出(其實(shí)就是一種PHP腳本)。因此,Smarty可以與Zend Cache并肩作戰(zhàn)。通過(guò)基準(zhǔn)測(cè)試已經(jīng)發(fā)現(xiàn)這是一種完美的解決方案。

正如引擎創(chuàng)作者所說(shuō):當(dāng)和PHP加速器一起使用時(shí),Smarty的表現(xiàn)確實(shí)有所提升。 Smarty也提供變量修改功能。你可以把字符串大寫(xiě)、切割、查找和替換。變量修改器簡(jiǎn)化了編程的過(guò)程,繞開(kāi)了程序員經(jīng)常使用的專業(yè)語(yǔ)法。這樣模板設(shè)計(jì)者就會(huì)對(duì)模板變量的格式有更好的控制,雖然他首先得知道哪些變量修改器是可用的。這是個(gè)很有用的功能,因?yàn)榫浞ㄗ兊煤?jiǎn)潔,而且不是程序員的人也可以使用它。

Smarty也在你的模板中提供了很多內(nèi)置的和習(xí)慣使用的函數(shù)。

這些函數(shù)就像模板的應(yīng)用編程接口,除了習(xí)慣使用函數(shù)可以被修改而內(nèi)置函數(shù)不能。這些函數(shù)可以讓4F60實(shí)現(xiàn)條件輸出(使用if語(yǔ)句),動(dòng)態(tài)循環(huán)迭代(使用 foreach或section語(yǔ)句),讀取config文件等等功能。

過(guò)濾器 Smarty可以將過(guò)濾器分類,讓你可以在模板被編譯之前或者之后運(yùn)行過(guò)濾器。預(yù)過(guò)濾器在你的模板運(yùn)行前使用,后置過(guò)濾器在模板被編譯后使用,輸出過(guò)濾器會(huì)過(guò)濾模板的輸出結(jié)果。為什么使用過(guò)濾器?你可能會(huì)問(wèn)。預(yù)過(guò)濾器可以去掉你不想要的內(nèi)容,確保你不想要的內(nèi)容不會(huì)被編譯。后置過(guò)濾器可以再模板被編譯后加入附加的信息,比如創(chuàng)建時(shí)間。輸出過(guò)濾器可以讓你修改模板的輸出,比如隱藏掉所有的電郵地址以垃圾郵件的騷擾。

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

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

通過(guò)資源插件,你可以將你的模板保存在數(shù)據(jù)庫(kù)里,通過(guò)一定的接口取回?cái)?shù)據(jù)。結(jié)束語(yǔ)將Smarty的模板編譯功能和PHP固有的效率結(jié)合在一起,你就擁有了絕對(duì)的速度優(yōu)勢(shì)。使用設(shè)計(jì)優(yōu)良的插件構(gòu)架,Smarty還有擴(kuò)展的函數(shù)功能,包括模板功能和變量修改器。速度和函數(shù)性的提高并沒(méi)有影響Smarty的親和度,事實(shí)上,Smarty非常容易上手。Smarty同時(shí)也配備了在線共享文檔。你可以從Smarty Website上下載。

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

希望通過(guò)以上內(nèi)容的介紹,能夠給你帶來(lái)幫助。

【編輯推薦】

  1. 非常實(shí)用 十個(gè)PHP高級(jí)應(yīng)用技巧
  2. 細(xì)說(shuō)PHP中strlen和mb_strlen的區(qū)別
  3. 再議PHP程序語(yǔ)言中 單雙引號(hào)的區(qū)別
  4. 內(nèi)嵌式的語(yǔ)言PHP應(yīng)用技巧七則
  5. PHP開(kāi)發(fā)必備 一步步學(xué)PHP模版引擎Dwoo
責(zé)任編輯:于鐵 來(lái)源: 大家論壇
相關(guān)推薦

2011-07-07 13:48:35

Smarty

2011-07-07 14:14:41

PHP模版

2009-11-30 13:15:27

PHP模板Smarty

2011-07-07 16:24:09

Smarty

2009-12-01 19:28:16

PHP模板

2011-06-15 16:58:26

PHP

2011-07-12 18:02:00

PHP

2011-06-29 15:02:25

Qt 模板庫(kù)

2011-07-15 14:01:50

PHP模板引擎

2009-11-17 14:33:38

PHP數(shù)組循環(huán)操作

2011-07-12 17:42:46

PHP

2009-12-10 09:59:49

PHP讀取目錄函數(shù)

2009-11-30 18:34:22

PHP簡(jiǎn)單語(yǔ)法

2009-12-02 20:15:12

PHP header函

2009-11-18 13:11:29

PHP核心

2009-11-18 11:05:27

PHP串行化

2011-07-05 17:29:56

2014-05-16 11:09:38

Handlebars模板引擎

2023-12-05 16:01:12

模板方法設(shè)計(jì)模式算法結(jié)構(gòu)

2009-12-11 17:14:43

PHP中文處理函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)