THINKPHP中D方法呼叫邏輯層類

2021-07-03 19:59:28 字數 1406 閱讀 7337

d方法應該是用的比較多的方法了,用於例項化自定義模型類,是thinkphp框架對model類例項化的一種封裝,並實現了單例模式,支援跨專案和分組呼叫了,下面給各位整理乙個d方法的文章。

thinkphp的d函式十分強大,一般情況下用d方法最多的情況是例項化自定義模型類,實現資料庫相關的操作,但是d方法的功能遠遠不僅於此,d方法還可用於邏輯層,服務層自定義類的例項化。

呼叫格式如下:

d('[專案://][分組/]模型','模型層名稱')

關於d方法的一般用法本文不再描述,就是常見的d(『user』)例項化model下面的usermodel.class.php。

我們在lib_path,也就是和controller(以前版本叫action),model資料夾同級的目錄建立logic或者service資料夾。

thinkphp分層模型邏輯層

在logic資料夾中新建檔案userlogic.class.php,作為使用者邏輯業務的乙個類,那麼例項化這個類的時候,可以用tp自帶的d方法,如下:

d('user','logic');

這樣就呼叫logic資料夾下的userlogic.class.php檔案並例項化class userlogic,專業一點的說法是d方法支援分成模型並例項化自定義類。這裡的分層模型指的就是logic和service這樣的目錄。

注:分層模型從thinkphp 3.1版本開始支援。

我們來看看thinkphp d方法的原始碼:

/*** d函式用於例項化模型類 格式 [資源://][模組/]模型

* @param string $name 資源位址

* @param string $layer 模型層名稱

* @return model

*/function d($name='',$layer='') elseif(false === strpos($name,'/'))else

$_model[$name.$layer]  =  $model;

return $model;

}當然,我們也可以重新寫個呼叫分層模型中自定義類的方法,如:

/*** 業務邏輯層呼叫函式

* @param string $name 業務模型名稱

* @return object

*/function logic($name)

require lib_path."/".$class.'.class.php';

$_obj[$name] = new $class($name);

return $_obj[$name];

}寫到tp公共函式中,以後呼叫logic分層模型(實際上就是這個資料夾)下的自定義類就可以直接這樣用:logic(『user』)就ok了。

thinkphp中的M方法和D方法

thinkphp 中m方法和d方法都用於例項化乙個模型類,m方法 用於高效例項化乙個基礎模型類,而 d方法 用於例項化乙個使用者定義模型類。使用m方法 如果是如下情況,請考慮使用 m方法 1.對資料表進行簡單的 curd 操作而無複雜的業務邏輯時 2.只有個別的表有較為複雜的業務邏輯時,將 m方法 ...

ThinkPHP函式詳解 D方法

從本篇開始,我們會陸續給大家詳細說明下框架內建函式的用法。d方法應該是用的比較多的方法了,用於例項化自定義模型類,是thinkphp框架對model類例項化的一種封裝,並實現了單例模式,支援跨專案和分組呼叫,呼叫格式如下 d 專案 分組 模型 模型層名稱 方法的返回值是例項化的模型物件。d方法可以自...

ThinkPHP 中M方法和D方法的具體區別

thinkphp 中m方法和d方法都用於例項化乙個模型類,m方法 用於高效例項化乙個基礎模型類,而 d方法 用於例項化乙個使用者定義模型類。如果是如下情況,請考慮使用 m方法 對資料表進行簡單的 curd 操作而無複雜的業務邏輯時 只有個別的表有較為複雜的業務邏輯時,將 m方法 與例項化 commo...