ThinkPHP框架中快速鍵M和D的區別

巴扎黑
發布: 2016-11-24 14:33:47
原創
1469 人瀏覽過

D()和M()方法的差別:

D和M的差別主要在於

M方法不需要建立模型類文件,M方法不會讀取模型類,所以預設自動驗證是無效的,但是可以透過動態賦值的方式實作

而D方法必須有建立模型類別。

我們可以用下面兩種方法去建立一個資料表的映射物件

第一種:$Test = D('Test')

第二種:$Test = new Model('Test')

雖然這兩種都可以對資料進行select,insert,delete,udpate操作,在

資料驗證上有很大的不同,

用第一種方式實例一個模型就會有資料檢查功能,如果title 沒有填寫的話就會提示「請輸入標題」(這個是tp提供的一個自動驗證功能,當然也需要在對應的model定義好驗證條件);

如果用第二種就沒有了這個資料驗證功能,需要手動驗證。

總結如下:

D函數實例化的是你目前專案的Lib/Model下面的模組。
如果該模組不存在的話,直接傳回實例化Model的物件(意義就與M()函數相同)。
而M只返回,實例化Model的物件。它的$name參數作為資料庫的表名來處理對資料庫的操作。

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

再通俗一點說:
M實例化參數是資料庫的表名。
D實例化的是你自己在Model資料夾下面建立的模型檔。
D就是在你沒有定義模型的時候,系統會自動幫你定義一個模型,這樣你才進行簡單的資料輸入或輸出。
每一個Action檔都應該對應Model檔的,如果你定義了Model的話,
如:$Form = D(“User”)就可以改成$Form = new UserModel();(User是指你的模型文件名)。


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板