<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 多層MVC [上一頁](# "上一頁")[下一頁](# "下一頁") ThinkPHP基于MVC(Model-View-Controller,模型-視圖-控制器)模式,并且均支持多層(multi-Layer)設計。 ### 模型(Model)層 默認的模型層由Model類構成,但是隨著項目的增大和業務體系的復雜化,單一的模型層很難解決要求,從3.1開始推出了多層Model的支持,設計思路很簡單,不同的模型層仍然都繼承自系統的Model類,但是在目錄結構和命名規范上做了區分。 例如在某個項目設計中需要區分數據層、邏輯層、服務層等不同的模型層,我們可以在模塊目錄下面創建`Model`、`Logic`和`Service`目錄,把對用戶表的所有模型操作分成三層: 1. 數據層:Model/UserModel 用于定義數據相關的自動驗證和自動完成和數據存取接口 1. 邏輯層:Logic/UserLogic 用于定義用戶相關的業務邏輯 1. 服務層:Service/UserService 用于定義用戶相關的服務接口等 而這三個模型操作類統一都繼承Model類即可,例如:數據層:`Home/Model/UserModel.class.php` ~~~ namespace Home\Model; use Think\Model; class UserModel extends Model{ } ~~~ 邏輯層:`Home/Logic/UserLogic.class.php` ~~~ namespace Home\Logic; use Think\Model; class UserLogic extends Model{ } ~~~ 服務層:`Home/Service/UserService.class.php` ~~~ namespace Home\Service; use Think\Model; class UserService extends Model{ } ~~~ 這樣區分不同的模型層之后對用戶數據的操作就非常清晰,在調用的時候,我們也可以用內置的D方法很方便的調用: ~~~ D('User') //實例化UserModel D('User','Logic') //實例化UserLogic D('User','Service') //實例化UserService ~~~ 默認的模型層是Model,我們也可以更改設置,例如: ~~~ 'DEFAULT_M_LAYER' => 'Logic', // 更改默認的模型層名稱為Logic ~~~ 更改之后,實例化的時候需要改成: ~~~ D('User') //實例化UserLogic D('User','Model') //實例化UserModel D('User','Service') //實例化UserService ~~~ > 對模型層的分層劃分是很靈活的,開發人員可以根據項目的需要自由定義和增加模型分層,你也完全可以只使用Model層。 ### 視圖(View)層 視圖層由模板和模板引擎組成,在模板中可以直接使用PHP代碼,模板引擎的設計會在后面講述,通過驅動也可以支持其他第三方的模板引擎。視圖的多層可以簡單的通過目錄(也就是模板主題)區分,例如: ~~~ View/default/User/add.html View/blue/User/add.html ~~~ 復雜一點的多層視圖還可以更進一步,采用不同的視圖目錄來完成,例如: ~~~ view 普通視圖層目錄 mobile 手機端訪問視圖層目錄 ~~~ 這樣做的好處是每個不同的視圖層都可以支持不同的模板主題功能。 默認的視圖層是View目錄,我們可以調整設置如下: ~~~ 'DEFAULT_V_LAYER' => 'Mobile', // 默認的視圖層名稱更改為Mobile ~~~ > 非默認視圖層目錄的模板獲取需要使用T函數,后面會講到。 ### 控制器(Controller)層 ThinkPHP的控制器層由核心控制器和業務控制器組成,核心控制器由系統內部的App類完成,負責應用(包括模塊、控制器和操作)的調度控制,包括HTTP請求攔截和轉發、加載配置等。業務控制器則由用戶定義的控制器類完成。多層業務控制器的實現原理和模型的分層類似,例如業務控制器和事件控制器: ~~~ Controller/UserController //用于用戶的業務邏輯控制和調度 Event/UserEvent //用于用戶的事件響應操作 ~~~ 訪問控制器 `Home/Controller/UserController.class.php` 定義如下: ~~~ namespace Home\Controller; use Think\Controller; class UserController extends Controller{ } ~~~ 事件控制器 `Home/Event/UserEvent.class.php` 定義如下: ~~~ namespace Home\Event; use Think\Controller; class UserEvent extends Controller{ } ~~~ UserController負責外部交互響應,通過URL請求響應,例如 `http://serverName/User/index`,而 UserEvent 負責內部的事件響應,并且只能在內部調用: `A('User','Event');` 默認的訪問控制器層是Controller,我們可以調整設置如下: ~~~ 'DEFAULT_C_LAYER' => 'Event', // 默認的控制器層名稱改為Event ~~~ 所以是和外部隔離的。多層控制器的劃分也不是強制的,可以根據應用的需要自由分層。控制器分層里面可以根據需要調用分層模型,也可以調用不同的分層視圖(主題)。 > 在MVC三層中,ThinkPHP并不依賴M或者V,甚至可以只有C或者只有V,這個在ThinkPHP的設計里面是一個很重要的用戶體驗設計,用戶只需要定義視圖,在沒有C的情況下也能自動識別。 [上一頁](# "上一頁")[下一頁](# "下一頁")
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看