d方法應該是用的比較多的方法了,用於例項化自定義模型類,是thinkphp框架對model類例項化的一種封裝,並實現了單例模式,支援跨專案和分組呼叫,呼叫格式如下:
d('[專案://][分組/]模型','模型層名稱')
方法的返回值是例項化的模型物件。
d方法可以自動檢測模型類,如果存在自定義的模型類,則例項化自定義模型類,如果不存在,則會例項化model基類,同時對於已例項化過的模型,不會重複去例項化。
d方法最常用的用法就是例項化當前專案的某個自定義模型,例如:// 例項化user模型
$user =d
('user'
);複製**
會匯入當前專案下面的lib/model/usermodel.class.php檔案,然後例項化usermodel類,所以,實際上的**可能和下面的等效:import
('@.model.usermodel'
);$user
=new
usermodel
();複製**
但是如果使用d方法的話,如果這個usermodel類不存在,則會自動呼叫new
model
('user'
);複製**
並且第二次呼叫的時候無需再次例項化,可以減少一定的物件例項化開銷。
d方法可以支援跨分組和專案例項化模型,例如://例項化admin專案的user模型d(
'admin://user'
)//例項化admin分組的user模型d(
'admin/user'
)複製**
注意:要實現跨專案呼叫模型的話,必須確保兩個專案的目錄結構是並列的。
3.1版本開始,由於增加了分層模型的支援,所以d方法也可以例項化其他的模型,例如:
// 例項化userservice類
$user =d
('user'
,'service'
);
// 例項化userlogic類
$user =d
('user'
,'logic'
);
複製**
d
('user'
,'service'
); 會匯入lib/service/userservice.class.php,並例項化,等效於下面的**:import
('@.service.userservice'
);$user
=new
userserivce
();
thinkphp中M()和D()的理解
在tp框架中基於mvc設計模式中的model資料夾下,處理資料時會建立和表相關的模型類檔案。在控制器中需要使用時需要例項化模型類物件,寫語句 1.a new goodsmodel 這是基於建立了goodsmodel.class.php檔案,裡邊可能寫有自己的個性化的方法。而為了簡化這個 就可以使用函...
mysql當中distinct的理解和使用
在使用mysql時,有時需要查詢出某個欄位不重複的記錄,這時可以使用mysql提供的distinct這個關鍵字來過濾重複的記錄,但是實際中我們往往用distinct來返回不重複欄位的條數 count distinct id 其原因是distinct只能返回他的目標字段,而無法返回其他字段,例如有如下...
ThinkPhp中M和D的區別
d函式例項化的是 你當前專案的lib model下面的模組 如果該模組不存在的話 直接返回例項化model的物件 意義就與m 函式相同 而m 只返回 例項化 model的物件.它的 name引數 作為資料庫的表名來處理對資料庫的操作 通俗點說,d就是例項化乙個基於model檔案的model,而m則是...