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