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