摘要:有什么作用層的作用就是把這些需要多個(gè)參與的復(fù)雜業(yè)務(wù)邏輯多帶帶封裝出來(lái),這些之間不再發(fā)生直接的依賴,而是在層內(nèi)協(xié)同完成邏輯。層的第一個(gè)目的其實(shí)就是對(duì)層進(jìn)行解耦。相關(guān)資料框架中,有必要再分離層么
序言
此前,我看過(guò)這樣的一個(gè)提問(wèn)“Yii2框架中,有必要再分離service層么?”,從別人的回答中,自己也收獲了答案,但我覺(jué)得還需要有個(gè)活生生的粟子,才具有更加清晰明了和強(qiáng)有力的說(shuō)服力。如對(duì)我的實(shí)戰(zhàn)經(jīng)歷感興趣的繼續(xù)往下看,喜歡的還可以點(diǎn)擊推薦和收藏。在舉粟子前,我先講講service是什么?有什么作用吧?免得還有人糊涂。
1、service是什么?
在面向OO的系統(tǒng)里,service就是biz manager,在面向過(guò)程的系統(tǒng)里service就是TS腳本。
2、service有什么作用?
service層的作用就是把這些需要多個(gè)model參與的復(fù)雜業(yè)務(wù)邏輯多帶帶封裝出來(lái),這些model之間不再發(fā)生直接的依賴,而是在service層內(nèi)協(xié)同完成邏輯。service層的第一個(gè)目的其實(shí)就是對(duì)model層進(jìn)行解耦。
1、在Yii2框架中建立service層,專門處理公共且復(fù)雜的業(yè)務(wù)邏輯。
效果圖1、在common下建立個(gè)service層。
2、部分公共數(shù)據(jù)處理邏輯(主要的數(shù)據(jù)處理都寫在這里)。
1、在commonservice下寫個(gè)CluesBranchService.php文件,CluesBranchService類繼承本模塊主要的models類Chance。凡是關(guān)于Chance的公共業(yè)務(wù)邏輯都往這個(gè)文件里寫。
namespace commonservice; use Yii; use apimodulesv1modelsSales; use apimodulesv1chancemodelsChance; /** * //下屬的線索公共數(shù)據(jù)處理邏輯 */ class CluesBranchService extends Chance { //下屬的線索列表 public static function getIndex() { $SalesModel = new Sales(); $uids = $SalesModel->sevenChild(Yii::$app->user->id); if(count($uids)){ $query = Chance::find()->where(["in","owner_id",$uids]); }else{ $query = Chance::find()->where(["owner_id"=>"-1"]); } return $query; } }
2、Controllers里調(diào)用。
use commonserviceCluesBranchService; $query = CluesBranchService::getIndex();
注釋:這里返回的是$query,而不是查詢的結(jié)果,用過(guò)Yii2的都知道列表實(shí)現(xiàn)分頁(yè)用的是ActiveDataProvider,不需要查出結(jié)果,為了統(tǒng)一起來(lái)所以這里直接返回$query。如有特殊需要加where、andWhere或者獲取數(shù)據(jù)結(jié)果的可以這樣$query->where(["條件"]);$query->all()。
分析總結(jié)以上是一個(gè)業(yè)務(wù)邏輯比較簡(jiǎn)單的service層的實(shí)現(xiàn)方式,看到這里可能還有人疑惑,到底應(yīng)不應(yīng)該分離service層?
簡(jiǎn)單粗暴的總結(jié)來(lái)說(shuō),如果你的某個(gè)業(yè)務(wù)邏輯,需要用到多個(gè)model,就放到service層里面去,如果只是這個(gè)model自己的事,跟其它的model沒(méi)有任何關(guān)系,放到model里面就好。
如果你的系統(tǒng)本來(lái)就很小,業(yè)務(wù)邏輯也超級(jí)簡(jiǎn)單,也不存在長(zhǎng)期演進(jìn)迭代的需求,隨你怎么高興怎么寫都行。
Yii2框架中,有必要再分離service層么?:https://segmentfault.com/q/1010000003849810
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/31949.html
摘要:項(xiàng)目訓(xùn)練目標(biāo)項(xiàng)目訓(xùn)練目標(biāo)項(xiàng)目目標(biāo)綜合運(yùn)用前面所學(xué)習(xí)的知識(shí)點(diǎn)熟練層層層之間的方法相互調(diào)用操作熟練操作數(shù)據(jù)庫(kù)表完成增刪改查了解公司項(xiàng)目開(kāi)發(fā)的流程,充分的掌握項(xiàng)目需求分析設(shè)計(jì)與功能的代碼實(shí)現(xiàn)。 01項(xiàng)目訓(xùn)練目標(biāo) * A: 項(xiàng)目訓(xùn)練目標(biāo) * a: 項(xiàng)目目標(biāo) * 綜合運(yùn)用前面所學(xué)習(xí)的知識(shí)點(diǎn) * 熟練View層、Service層、Dao層之間的方法相互調(diào)用操...
摘要:但是還是會(huì)阻塞事件,所以會(huì)可能在觸發(fā)前或后執(zhí)行,但是一定會(huì)在事件前觸發(fā)。當(dāng)監(jiān)聽(tīng)到該圖片元素進(jìn)入可視窗口時(shí),即將自定義屬性中的地址存儲(chǔ)到屬性中,達(dá)到懶加載的效果。當(dāng)代碼執(zhí)行,線程被凍結(jié)。所以的性能讓變慢。 概括 涉及到的分類 網(wǎng)絡(luò)層面 構(gòu)建層面 瀏覽器渲染層面 服務(wù)端層面 涉及到的功能點(diǎn) 資源的合并與壓縮 圖片編解碼原理和類型選擇 瀏覽器渲染機(jī)制 懶加載預(yù)加載 瀏覽器存儲(chǔ) 緩存機(jī)制...
閱讀 3159·2021-11-24 10:24
閱讀 2979·2021-11-11 16:54
閱讀 3091·2021-09-22 15:55
閱讀 2045·2019-08-30 15:44
閱讀 1912·2019-08-29 18:41
閱讀 2774·2019-08-29 13:43
閱讀 3065·2019-08-29 12:51
閱讀 1210·2019-08-26 12:19