ThinkPHP3.1新特性之多層MVC的支持
1.模型(Model)層:默認的模型層由Model類構(gòu)成,但是隨著項目的增大和業(yè)務(wù)體系的復(fù)雜化,單一的模型層很難解決要求,從3.1開始推出了多層Model的支持,設(shè)計思路很簡單,不同的模型層仍然都繼承自系統(tǒng)的Model類,但是在目錄結(jié)構(gòu)和命名規(guī)范上做了區(qū)分,例如在某個項目設(shè)計中需要區(qū)分數(shù)據(jù)層、邏輯層、服務(wù)層等不同的模型層,我們可以在項目的Lib目錄下面創(chuàng)建Model、Logic和Service目錄,把對用戶表的所有模型操作分成三層:
數(shù)據(jù)層:Model/UserModel 用于定義數(shù)據(jù)相關(guān)的自動驗證和自動完成和數(shù)據(jù)存取接口
邏輯層:Logic/UserLogic 用于定義用戶相關(guān)的業(yè)務(wù)邏輯
服務(wù)層:Service/UserService 用于定義用戶相關(guān)的服務(wù)接口等
而這三個模型操作類統(tǒng)一都繼承Model類即可,這樣對用戶數(shù)據(jù)的操作就非常清晰,在調(diào)用的時候,也可以用內(nèi)置的D方法很方便的調(diào)用:
D('User') //實例化UserModel D('User','Logic') //實例化UserLogic D('User','Service') //實例化UserService
對模型層的分層劃分是很靈活的,開發(fā)人員可以根據(jù)項目的需要自由定義分層。
2.視圖(View)層:由模板和模板引擎組成,在模板中可以直接使用PHP代碼,模板引擎的設(shè)計會在后面講述,通過驅(qū)動也可以支持其他第三方的模板引擎。視圖的多層可以簡單的通過目錄區(qū)分,例如:
Tpl/default/User/add.html Tpl/blue/User/add.html
3.控制器(Controller)層:ThinkPHP的控制器層由核心控制器和業(yè)務(wù)控制器組成,核心控制器由系統(tǒng)內(nèi)部的App類完成,負責(zé)應(yīng)用(包括模塊和操作)的調(diào)度控制,包括HTTP請求攔截和轉(zhuǎn)發(fā)、加載配置等,業(yè)務(wù)控制器則由用戶定義的Action類完成。3.1版本開始增加了多層業(yè)務(wù)控制器的支持。其實現(xiàn)原理和模型的分層類似,例如業(yè)務(wù)控制器和事件控制器:
Action/UserAction //用于用戶的業(yè)務(wù)邏輯控制和調(diào)度 Event/UserEvent //用于用戶的事件響應(yīng)操作
UserAction負責(zé)外部交互響應(yīng),通過URL請求響應(yīng),例如 http://serverName/User/index,而UserEvent 負責(zé)內(nèi)部的事件響應(yīng),并且只能在內(nèi)部調(diào)用
A('User','Event');
所以是和外部隔離的。多層控制器的劃分也不是強制的,可以根據(jù)項目的需要自由分層。控制器分層里面可以根據(jù)需要調(diào)用分層模型,也可以調(diào)用不同的目錄的視圖模板。
同時,R方法也可以支持多層控制器的調(diào)用了,增加了第三個參數(shù)表示控制器的層名稱,例如:
R('User/register',array(15),'Event');
表示調(diào)用UserEvent控制器的register方法,并傳入?yún)?shù)15.
在MVC三層中,ThinkPHP并不依賴M或者V,甚至可以只有C或者只有V,這個在ThinkPHP的設(shè)計里面是一個很重要的用戶體驗設(shè)計,用戶只需要定義視圖,在沒有C的情況下也能自動識別。
相關(guān)文章
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法詳解
本篇文章是對AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法進行了詳細的分析介紹,需要的朋友參考下2013-05-05ubutu 16.04環(huán)境下,PHP與mysql數(shù)據(jù)庫,網(wǎng)頁登錄驗證實例講解
下面小編就為大家?guī)硪黄猽butu 16.04環(huán)境下,PHP與mysql數(shù)據(jù)庫,網(wǎng)頁登錄驗證實例講解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07php通過PHPExcel導(dǎo)入Excel表格到MySQL數(shù)據(jù)庫的簡單實例
下面小編就為大家?guī)硪黄猵hp通過PHPExcel導(dǎo)入Excel表格到MySQL數(shù)據(jù)庫的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10PHP執(zhí)行l(wèi)inux命令常用函數(shù)匯總
一般情況下,很少會用php去執(zhí)行l(wèi)inux命令,不過特殊情況下,你也許會用到這些函數(shù)。以前我知道有二個函數(shù)可以執(zhí)行l(wèi)inux命令,一個是exec,一個是shell_exec,通過本文給大家介紹PHP執(zhí)行l(wèi)inux命令常用函數(shù)匯總,需要的朋友參考下2016-02-02