PHP.MVC的模板標(biāo)簽系統(tǒng)(2)_PHP教程
推薦:mysql 時(shí)間轉(zhuǎn)換函數(shù)的用法mysql 時(shí)間轉(zhuǎn)換函數(shù)的用法2007-10-31 15:03DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。這些索引值對(duì)應(yīng)于ODBC標(biāo)準(zhǔn)。 mysql> select DAYOFW
The Php.MVC Tag Action Dispatcher
TagActionDispatcher是一個(gè)標(biāo)準(zhǔn)的ActionDispatcher類的實(shí)現(xiàn),它支持訪問(wèn)基本模板標(biāo)簽.TagActionDispatcher類支持相同的ActionObjects集合和ViewResourcesConfig屬性作為默認(rèn)的ActionDispatcher.TagActionDispatcher類能被用在帶有或沒(méi)有帶有模板標(biāo)簽系統(tǒng)上,盡管由于它的額外處理會(huì)造成小的性能下降.
模板標(biāo)簽庫(kù)是PHP.MVC框架結(jié)構(gòu)的子系統(tǒng).模板標(biāo)簽庫(kù)聯(lián)合TagActionDispatcher一起工作來(lái)支持一些簡(jiǎn)單的模板標(biāo)簽.
下面的圖表顯示了PHP.MVC模板標(biāo)簽系統(tǒng)的總攬.左邊展示的是模板標(biāo)簽系統(tǒng)的程序流程.右邊是TagActionDispatcher的程序流程,還有標(biāo)簽?zāi)0迨窃鯓邮惯@些類進(jìn)行交互.
1.初始化
當(dāng)控制器傳遞控制到達(dá)TagActionDispatcher,一些初始化觸發(fā)去設(shè)置ActionObjects和ViewResourcesConfig屬性為了使用我們的模板:
從request中重新獲得$form,$errors和$data對(duì)象,如果這些對(duì)象中的任意一個(gè)已經(jīng)在之前被創(chuàng)建(比如在Action類中),那么對(duì)象現(xiàn)在將在資源模板中不可見,否則對(duì)象將被設(shè)置為NULL.
重新獲得ViewResourcesConfig對(duì)象的參考,它包含了配置參數(shù).
設(shè)置在ViewResourcesConfig參數(shù)中指向模板源文件和編譯的模板文件的路徑.
2.設(shè)置標(biāo)簽頁(yè)面
模板源文件的擴(kuò)展名(可能是".ssp")被用來(lái)和ViewResourcesConfig->tagFlagStr參數(shù)相比較來(lái)決定是否這個(gè)頁(yè)面需要處理,否則頁(yè)面將被處理為標(biāo)準(zhǔn)(無(wú)標(biāo)簽)模板文件.我們能在view-resources元素中配置標(biāo)簽文件擴(kuò)展名,就像這樣:
| <view-resources ... tagFlagStr = ".ssp" tagFlagCnt = "-4" ... </view-resources> |
tagFlagStr指示了標(biāo)簽?zāi)0逶次募鼙活A(yù)處理,比如:myPage.ssp.這個(gè)擴(kuò)展名觸發(fā)標(biāo)簽處理.屬性tagFlagCnt定義了文件名結(jié)尾的字符數(shù),包括"."(xxxYyy.ssp).據(jù)個(gè)例子,-4代表源文件名最后4個(gè)字符.默認(rèn)值是.ssp和-4,因此如果我們使用一個(gè)模板文件名像myPage.ssp,我們不需要設(shè)置這些參數(shù).
3.處理標(biāo)簽文件
模板標(biāo)簽系統(tǒng)決定是否運(yùn)行標(biāo)簽處理器,要根據(jù)ViewResourcesConfig->processTags屬性.如果這個(gè)屬性為真,模板頁(yè)(及它所包含的頁(yè))將被標(biāo)簽處理器類所處理,否則標(biāo)簽處理器不會(huì)被調(diào)用.開發(fā)者只要將它在開發(fā)中將其設(shè)置為真即可,假則不處理.但要注意的是當(dāng)processTags屬性設(shè)置為真,修改過(guò)的標(biāo)簽頁(yè)才會(huì)被編譯(這依賴于compileAll屬性設(shè)置).我們能定義processTags屬性在view-resources元素,就像這樣:
| <view-resources ... processTags = "True" ... </view-resources> |
注意,它的默認(rèn)值是假.
4.編譯模板頁(yè).
如果TagActionDispatcher決定模板頁(yè)將被處理,那么它會(huì)傳遞控制給模板標(biāo)簽系統(tǒng).現(xiàn)在模板標(biāo)簽系統(tǒng)將決定是否只編譯修改過(guò)的頁(yè),還是編譯所有頁(yè).這種行為使用ViewResourcesConfig->compileAll屬性來(lái)定義.我們定義compileAll屬性就像這樣:
| <view-resources ... compileAll = "True" ... </view-resources> |
這個(gè)屬性默認(rèn)為假.
5.只編譯修改的頁(yè).
如果compileAll屬性設(shè)置為假(默認(rèn)值),那么只會(huì)編譯修改過(guò)的頁(yè).據(jù)個(gè)例子,如果被請(qǐng)求的頁(yè)面自從上次被請(qǐng)求以來(lái)被修改過(guò),此頁(yè)將會(huì)被編譯.
6.編譯所有的頁(yè).
如果compileAll屬性設(shè)置為真,模板標(biāo)簽系統(tǒng)將總是編譯頁(yè)面(包括包含的頁(yè)面)無(wú)論此頁(yè)面自從上次請(qǐng)求以來(lái)是否修改過(guò).開發(fā)者使用在開發(fā)中使用這個(gè)選項(xiàng)能夠保證所有的頁(yè)面都被處理.
7.處理VIEW資源.
在處理完模板頁(yè)之后,控制權(quán)回到TagActionDispatcher.被請(qǐng)求的VIEW資源(模板文件)將被任何其他的正規(guī)PHP.MVC模板文件所處理.TagActionDispatcher重新獲得被編譯的頁(yè)(包括包含的頁(yè)面)并且將頁(yè)面輸出給用戶的瀏覽器.如果模板標(biāo)簽系統(tǒng)沒(méi)有被調(diào)用,TagActionDispatcher將被請(qǐng)求的頁(yè)面作為正規(guī)的VIEW資源來(lái)處理.比如TagActionDispatcher能被用來(lái)代替標(biāo)準(zhǔn)的ActionDispatcher.
分享:使用.htaccess來(lái)防盜鏈先解釋一下圖片防盜鏈和轉(zhuǎn)向: 圖片防盜鏈有什么用? 防止其它網(wǎng)站盜用你的圖片,浪費(fèi)你寶貴的流量。 圖片轉(zhuǎn)向有什么用? 如果你的網(wǎng)站以圖片為主,哪天發(fā)現(xiàn)月底沒(méi)到流量就快用光了,
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁(yè)面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問(wèn)控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語(yǔ)言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國(guó)語(yǔ)言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
PHP教程Rss訂閱編程教程搜索
PHP教程推薦
- PHP實(shí)例:用PHP實(shí)現(xiàn)表單驗(yàn)證碼登陸校驗(yàn)
- 解析PHP中正則的使用
- PHP+Ajax 實(shí)現(xiàn)分頁(yè)技術(shù)
- 網(wǎng)站建設(shè)中PHP的編程8種常見文件操作
- PHP技巧:PHP腳本編程中的文件系統(tǒng)函數(shù)庫(kù)
- PHP文章采集URL補(bǔ)全函數(shù)
- PHP分頁(yè)函數(shù)(PHP代碼+JS+CSS完整實(shí)例)
- 通用PHP動(dòng)態(tài)生成靜態(tài)HTML網(wǎng)頁(yè)的代碼
- 十天學(xué)會(huì)php之第一天
- 淺談保護(hù)代碼安全,PHP如何進(jìn)行注入
- 相關(guān)鏈接:
- 教程說(shuō)明:
PHP教程-PHP.MVC的模板標(biāo)簽系統(tǒng)(2)
。