thinkPHP中M()和D()的區別

在實例化的過程當中,常常使用D方法和M方法,這兩個方法的區別在於M方法實例化模型無需用戶爲每一個數據表定義模型類,若是D方法沒有找到定義的模型類,則會自動調用M方法。通俗一點說:M實例化參數是數據庫的表名。D實例化的是你本身在Model文件夾下面創建的模型文件
例如:$user = new UserModel();
等價於$user = D('user');
若是實例化的是一個空模型
例如 $Demo = new Model();
那麼它等價於 $Demo = M();
------------------------------------------------------------------------php

D和M的區別主要在於:M方法不須要建立模型類文件,M方法不會讀取模型類,因此默認狀況下自動驗證是無效的,可是能夠經過動態賦值的方式實現而D方法必須有建立模型類。咱們能夠用下面兩種方法去建立一個數據表的映射對象第一種:$Test = D('Test')第二種:$Test = new Model('Test')雖然這兩種均可以對數據進行select,insert,delete,udpate操做,在數據驗證上有很大的不一樣,用第一種方式實例一個模型就會有數據檢查功能,若是 title 沒有填寫的話就會提示 「請輸入標題」 (這個是tp提供的一個自動驗證功能,固然也須要在相應的model中定義好驗證條件);若是用第二種就沒有了·····還有1個區別就是當用了$trueTableName後,必須用$test=d('test'),表示查詢的是test表,若是用的是$test=m('test'),那麼都表示查詢的數據邊是think_test。thinkphp2.0版本測試有如此上面的問題thinkphp

-----------------------------------------------------------------------------------------------數據庫

通俗點說:D就是實例化一個基於Model文件的Model。M則是經過直接實例化Model方法(ThinkPHP基類)來動態的實例化一個Model對象,即便這個對應的Model文件不存在緩存

============================================================================函數

A快速實例化Action類庫性能

B執行行爲類測試

C配置參數存取方法spa

D快速實例化Model類庫對象

F快速簡單文本數據存取方法get

L 語言參數存取方法

M快速高性能實例化模型

R快速遠程調用Action類方法

S快速緩存存取方法

U URL動態生成和重定向方法

W 快速Widget輸出方法

D函數實例化的是你當前項目的Lib/Model下面的模塊。若是該模塊不存在的話,直接返回實例化Model的對象(意義就與M()函數相同)。而M只返回,實例化Model的對象。它的$name參數做爲數據庫的表名來處理對數據庫的操做。

相關文章
相關標籤/搜索