ThinkPHP 中M步驟和D方法的具體區別

來源:互聯網
上載者:User
ThinkPHP 中M方法和D方法的具體區別

M方法和D方法的區別

ThinkPHP 中M方法和D方法都用於執行個體化一個模型類,M方法 用於高效執行個體化一個基本模型類,而 D方法 用於執行個體化一個使用者定義模型類。

使用M方法

如果是如下情況,請考慮使用 M方法:

  1. 對資料表進行簡單的 CURD 操作而無複雜的商務邏輯時
  2. 只有個別的表有較為複雜的商務邏輯時,將 M方法 與執行個體化 CommonModel 類進行結合使用

M方法 甚至可以簡單看著就是對參數表名對應的資料表的操作:

$User = M('User'); 

使用D方法

如果是如下情況,請考慮使用 D方法:

  1. 需要使用 ThinkPHP 模型中一些進階功能如自動驗證功能(create()方法中實現)、關聯模型等
  2. 商務邏輯比較複雜,且涉及的表眾多
  3. 將商務邏輯定義在了自訂的模型類裡面(Lib/Model目錄下),而想在操作中實現這些商務邏輯

另外 D方法 不支援跨項目調用,需要使用:

$User = D('User', 'Admin');    // 執行個體化 Admin 項目下面的 User 模型 $User = D('Admin.User');        // 啟用了項目分組 

提示

啟用了項目分組後,Model 類並不必然對應著項目分組。多重專案組之間共有的模型類,統一放在 Model 目錄下,可以直接使用D('ModelName') 執行個體化。而 D('User.UserInfo') 並不表示 User 一定是一個項目分組,也可以僅僅是對 Model 下檔案的一個分類目錄,D('User.UserInfo') 執行個體化的是 User 目錄下的 UserInfo 模型類。

總結

M方法 和 D方法 都可以在模型類檔案不存在的情況下直接使用的,但顯然 M方法 更高效;但要使用模型類裡面商務邏輯,就必須使用 D方法。

一個比較形象的比喻就是:M方法 就如一台剛裝好作業系統的電腦,只能使用一些準系統;而 D方法 就如在裝好的系統上再安裝了一些如 Office、QQ 等應用軟體,功能更加強大,同時整個電腦運行速度也變慢了。

以上是對 M方法和D方法區別的一些總結,M方法 和 D方法 要根據實際情況來具體選擇。

  • 聯繫我們

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