兩者共同點都是實例化模型的,而兩者不同點呢?一起來看一下:
$User = D('User');括號中的參數User,對應的模型類文件的 HomeModelUserModel.class.php(我們假設當前模塊為Home),如果參數是‘UserType’,那么對應的模型類文件的 HomeModelUserTypeModel.class.php,也就是說D方法的參數就是模型的名稱,并且和模型類的大小寫定義是一致的。
$User = M('User'); 是和 $User = new ThinkModel('User'); 等效的;也就是說,M方法實例化的時候,默認情況下是直接實例化系統的ThinkModel類,如果我們希望實例化其他的公共模型類的話,可以使用如下方法:$User = M('HomeCommenModel:User','think_','db_config');(我們假設表前綴為think_)。
我們在實例化的過程中,經常使用D方法和M方法,這兩個方法的區別在于M方法實例化模型無需用戶為每個數據表定義模型類,如果D方法沒有找到定義的模型類,則會自動調用M方法。
另外,想要使用ThinkPHP中的自動驗證,自動完成功能,就需要使用D方法。
其實說白了,M方法實例化時候的參數就是你數據庫的表名,而D方法實例化的是你在Model文件夾下寫的Model類,當然想要自動驗證,自動完成,使用D方法。