這篇文章主要介紹了關於ThinkPHP3.1新特性中多層MVC的支援的介紹,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
預設的模型層由Model類構成,但是隨著項目的增大和業務體系的複雜化,單一的模型層很難解決要求,從3.1開始推出了多層Model的支援。這篇文章主要介紹了ThinkPHP3.1多層MVC的支援,需要的朋友可以參考下
1.模型(Model)層:預設的模型層由Model類構成,但是隨著項目的增大和業務體系的複雜化,單一的模型層很難解決要求,從3.1開始推出了多層Model的支援,設計思路很簡單,不同的模型層仍然都繼承自系統的Model類,但是在目錄結構和命名規範上做了區分,例如在某個項目設計中需要區分資料層、邏輯層、服務層等不同的模型層,我們可以在項目的Lib目錄下面建立Model、Logic和Service目錄,把對使用者表的所有模型操作分成三層:
資料層:Model/UserModel 用於定義資料相關的自動驗證和自動完成和資料存取介面
邏輯層:Logic/UserLogic 用於定義使用者相關的商務邏輯
服務層:Service/UserService 用於定義使用者相關的服務介面等
而這三個模型操作類統一都繼承Model類即可,這樣對使用者資料的操作就非常清晰,在調用的時候,也可以用內建的D方法很方便的調用:
D('User') //執行個體化UserModelD('User','Logic') //執行個體化UserLogicD('User','Service') //執行個體化UserService
對模型層的分層劃分是很靈活的,開發人員可以根據項目的需要自由定義分層。
2.視圖(View)層:由模板和模板引擎組成,在模板中可以直接使用PHP代碼,模板引擎的設計會在後面講述,通過驅動也可以支援其他第三方的模板引擎。視圖的多層可以簡單的通過目錄區分,例如:
Tpl/default/User/add.htmlTpl/blue/User/add.html
3.控制器(Controller)層:ThinkPHP的控制器層由核心控制器和業務控制器組成,核心控制器由系統內部的App類完成,負責應用(包括模組和操作)的調度控制,包括HTTP請求攔截和轉寄、載入配置等,業務控制器則由使用者定義的Action類完成。3.1版本開始增加了多層業務控制器的支援。其實現原理和模型的分層類似,例如業務控制器和事件控制器:
Action/UserAction //用於使用者的商務邏輯控制和調度Event/UserEvent //用於使用者的事件響應操作
UserAction負責外部互動響應,通過URL請求響應,例如 http://serverName/User/index,而UserEvent 負責內部的事件響應,並且只能在內部調用
A('User','Event');
所以是和外部隔離的。多層控制器的劃分也不是強制的,可以根據項目的需要自由分層。控制器分層裡面可以根據需要調用分層模型,也可以調用不同的目錄的視圖模板。
同時,R方法也可以支援多層控制器的調用了,增加了第三個參數表示控制器的層名稱,例如:
R('User/register',array(15),'Event');
表示調用UserEvent控制器的register方法,並傳入參數15.
在MVC三層中,ThinkPHP並不依賴M或者V,甚至可以只有C或者只有V,這個在ThinkPHP的設計裡面是一個很重要的使用者體驗設計,使用者只需要定義視圖,在沒有C的情況下也能自動識別。
以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!