PHP.MVC的模板標籤系統(二)

來源:互聯網
上載者:User
關鍵字 PHP.MVC的模板標籤系統(二)

The php.MVC Tag Action Dispatcher

  TagActionDispatcher是一個標準的ActionDispatcher類的實現,它支援訪問基本模板標籤.TagActionDispatcher類支援相同的ActionObjects集合和ViewResourcesConfig屬性作為預設的ActionDispatcher.TagActionDispatcher類能被用在帶有或沒有帶有模板標籤系統上,儘管由於它的額外處理會造成小的效能下降.
  模板標籤庫是PHP.MVC架構結構的子系統.模板標籤庫聯合TagActionDispatcher一起工作來支援一些簡單的模板標籤.
  下面的圖表顯示了PHP.MVC模板標籤系統的總攬.左邊展示的是模板標籤系統的程式流程.右邊是TagActionDispatcher的程式流程,還有標籤模板是怎樣使這些類進行互動.

 

1.初始化
  當控制器傳遞控制到達TagActionDispatcher,一些初始化觸發去設定ActionObjects和ViewResourcesConfig屬性為了使用我們的模板:
  從request中重新獲得$form,$errors和$data對象,如果這些對象中的任意一個已經在之前被建立(比如在Action類中),那麼對象現在將在資源模板中不可見,否則對象將被設定為NULL.
  重新獲得ViewResourcesConfig對象的參考,它包含了配置參數.
  設定在ViewResourcesConfig參數中指向模板源檔案和編譯的模板檔案的路徑.
2.設定標籤頁面
  模板源檔案的副檔名(可能是".ssp")被用來和ViewResourcesConfig->tagFlagStr參數相比較來決定是否這個頁面需要處理,否則頁面將被處理為標準(無標籤)模板檔案.我們能在view-resources元素中配置標籤副檔名,就像這樣:
  ...
tagFlagStr = ".ssp"
tagFlagCnt = "-4"
...
 
  tagFlagStr指示了標籤模板源檔案能被預先處理,比如:myPage.ssp.這個副檔名觸發標籤處理.屬性tagFlagCnt定義了檔案名稱結尾的字元數,包括"."(xxxYyy.ssp).據個例子,-4代表源檔案名稱最後4個字元.預設值是.ssp和-4,因此如果我們使用一個模板檔案名稱像myPage.ssp,我們不需要設定這些參數.
3.處理標籤檔案
  模板標籤系統決定是否運列標籤處理器,要根據ViewResourcesConfig->PRocessTags屬性.如果這個屬性為真,模板頁(及它所包含的頁)將被標籤處理器類所處理,否則標籤處理器不會被調用.開發人員只要將它在開發中將其設定為真即可,假則不處理.但要注意的是當processTags屬性設定為真,修改過的標籤頁才會被編譯(這依賴於compileAll屬性設定).我們能定義processTags屬性在view-resources元素,就像這樣:
  ...
processTags = "True"
...
 
  注意,它的預設值是假.
4.編譯模板頁.
  如果TagActionDispatcher決定模板頁將被處理,那麼它會傳遞控制給模板標籤系統.現在模板標籤系統將決定是否只編譯修改過的頁,還是編譯所有頁.這種行為使用ViewResourcesConfig->compileAll屬性來定義.我們定義compileAll屬性就像這樣:
  ...
compileAll = "True"
...
 
  這個屬性預設為假.
5.只編譯修改的頁.
  如果compileAll屬性設定為假(預設值),那麼只會編譯修改過的頁.據個例子,如果被請求的頁面自從上次被請求以來被修改過,此頁將會被編譯.
6.編譯所有的頁.
  如果compileAll屬性設定為真,模板標籤系統將總是編譯頁面(包括包含的頁面)無論此頁面自從上次請求以來是否修改過.開發人員使用在開發中使用這個選項能夠保證所有的頁面都被處理.
7.處理VIEW資源.
  在處理完模板頁之後,控制權回到TagActionDispatcher.被請求的VIEW資源(模板檔案)將被任何其他的正規PHP.MVC模板檔案所處理.TagActionDispatcher重新獲得被編譯的頁(包括包含的頁面)並且將頁面輸出給使用者的瀏覽器.如果模板標籤系統沒有被調用,TagActionDispatcher將被請求的頁面作為正規的VIEW資源來處理.比如TagActionDispatcher能被用來代替標準的ActionDispatcher.

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.