1. 程式人生 > >TP框架中D方法與M方法的區別

TP框架中D方法與M方法的區別

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是指你的模型檔名)。

參考:
http://blog.csdn.net/ld773704363/article/details/45795907
http://www.thinkphp.cn/topic/31582.html