標籤:意義 提示 mod 表名 自動 insert url 需要 情況
在執行個體化的過程中,經常使用D方法和M方法,這兩個方法的區別在於M方法執行個體化模型無需使用者為每個資料表定義模型類,如果D方法沒有找到定義的模型類,則會自動調用M方法。通俗一點說:M執行個體化參數是資料庫的表名。D執行個體化的是你自己在Model檔案夾下面建立的模型檔案
例如:$user = new UserModel();
等價於$user = D(‘user‘);
如果執行個體化的是一個空模型
例如 $Demo = new Model();
那麼它等價於 $Demo = M();
------------------------------------------------------------------------
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版本測試有如此上面的問題
-----------------------------------------------------------------------------------------------
通俗點說:D就是執行個體化一個基於Model檔案的Model。M則是通過直接執行個體化Model方法(ThinkPHP基類)來動態執行個體化一個Model對象,即使這個對應的Model檔案不存在
============================================================================
A快速執行個體化Action類庫
B執行行為類
C配置參數存取方法
D快速執行個體化Model類庫
F快速簡單文本資料存取方法
L 語言參數存取方法
M快速高效能執行個體化模型
R快速遠程調用Action類方法
S快速緩衝存取方法
U URL動態產生和重新導向方法
W 快速Widget輸出方法
D函數執行個體化的是你當前項目的Lib/Model下面的模組。如果該模組不存在的話,直接返回執行個體化Model的對象(意義就與M()函數相同)。而M只返回,執行個體化Model的對象。它的$name參數作為資料庫的表名來處理對資料庫的操作。
thinkPHP中M()和D()的區別