理解ThinkPHP當中的D方法

2021-07-07 02:36:47 字數 1422 閱讀 5118

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則是...