在實例化的過程中,經常使用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相關技術文章,請造訪ThinkPHP使用教學欄位進行學習!
以上是thinkphp m和d的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!