PHP.MVC的模板標簽系統之標簽行為調度

發表于:2007-05-25來源:作者:點擊數: 標簽:系統PHP.MVC調度標簽模板
TagActionDispatcher是一個標準的ActionDispatcher類的實現,它支持訪問基本模板標簽。TagActionDispatcher類支持相同的ActionObjects集合和ViewResourcesConfig屬性作為默認的ActionDispatcher。TagActionDispatcher類能被用在帶有或沒有帶有模板標簽系統上
TagActionDispatcher是一個標準的ActionDispatcher類的實現,它支持訪問基本模板標簽。TagActionDispatcher類支持相同的ActionObjects集合和ViewResourcesConfig屬性作為默認的ActionDispatcher。TagActionDispatcher類能被用在帶有或沒有帶有模板標簽系統上,盡管由于它的額外處理會造成小的性能下降。

  模板標簽庫是PHP。MVC框架結構的子系統,模板標簽庫聯合TagActionDispatcher一起工作來支持一些簡單的模板標簽。

  下面的圖表顯示了PHP。MVC模板標簽系統的總攬。左邊展示的是模板標簽系統的程序流程。右邊是TagActionDispatcher的程序流程,還有標簽模板是怎樣使這些類進行交互。

PHP.MVC的模板標簽系統之標簽行為調度

  

  1、初始化

  當控制器傳遞控制到達TagActionDispatcher,一些初始化觸發去設置ActionObjects和ViewResourcesConfig屬性為了使用我們的模板:
從request中重新獲得$form,$errors和$data對象,如果這些對象中的任意一個已經在之前被創建(比如在Action類中),那么對象現在將在資源模板中不可見,否則對象將被設置為NULL。

  重新獲得ViewResourcesConfig對象的參考,它包含了配置參數。

  設置在ViewResourcesConfig參數中指向模板源文件和編譯的模板文件的路徑。

  2、設置標簽頁面

  模板源文件的擴展名(可能是"。ssp")被用來和ViewResourcesConfig->tagFlagStr參數相比較來決定是否這個頁面需要處理,否則頁面將被處理為標準(無標簽)模板文件。我們能在view-resources元素中配置標簽文件擴展名,就像這樣:

<view-resources
...
tagFlagStr = "。ssp"
tagFlagCnt = "-4"
...
</view-resources>

  tagFlagStr指示了標簽模板源文件能被預處理,比如:myPage。ssp。這個擴展名觸發標簽處理。屬性tagFlagCnt定義了文件名結尾的字符數,包括"。"(xxxYyy。ssp)。據個例子,-4代表源文件名最后4個字符。默認值是。ssp和-4,因此如果我們使用一個模板文件名像myPage。ssp,我們不需要設置這些參數。

  3、處理標簽文件

  模板標簽系統決定是否運行標簽處理器,要根據ViewResourcesConfig->processTags屬性。如果這個屬性為真,模板頁(及它所包含的頁)將被標簽處理器類所處理,否則標簽處理器不會被調用。開發者只要將它在開發中將其設置為真即可,假則不處理。但要注意的是當processTags屬性設置為真,修改過的標簽頁才會被編譯(這依賴于compileAll屬性設置)。我們能定義processTags屬性在view-resources元素,就像這樣:

<view-resources
...
processTags = "True"
...
</view-resources>

  注意,它的默認值是假。

  4、編譯模板頁。

  如果TagActionDispatcher決定模板頁將被處理,那么它會傳遞控制給模板標簽系統?,F在模板標簽系統將決定是否只編譯修改過的頁,還是編譯所有頁。這種行為使用ViewResourcesConfig->compileAll屬性來定義。我們定義compileAll屬性就像這樣:

<view-resources
...
compileAll = "True"
...
</view-resources>

  這個屬性默認為假。

  5、只編譯修改的頁

  如果compileAll屬性設置為假(默認值),那么只會編譯修改過的頁。據個例子,如果被請求的頁面自從上次被請求以來被修改過,此頁將會被編譯。

  6、編譯所有的頁

  如果compileAll屬性設置為真,模板標簽系統將總是編譯頁面(包括包含的頁面)無論此頁面自從上次請求以來是否修改過。開發者使用在開發中使用這個選項能夠保證所有的頁面都被處理。

  7、處理VIEW資源

  在處理完模板頁之后,控制權回到TagActionDispatcher。被請求的VIEW資源(模板文件)將被任何其他的正規PHP。MVC模板文件所處理。TagActionDispatcher重新獲得被編譯的頁(包括包含的頁面)并且將頁面輸出給用戶的瀏覽器。如果模板標簽系統沒有被調用,TagActionDispatcher將被請求的頁面作為正規的VIEW資源來處理。比如TagActionDispatcher能被用來代替標準的ActionDispatcher。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97