Service层的是否必要性分析及案例
序言此前,我看过这样的一个提问“Yii2框架中,有必要再分离service层么?”,从别人的回答中,自己也收获了答案,但我觉得还需要有个活生生的粟子,才具有更加清晰明了和强有力的说服力。如对我的实战经历感兴趣的继续往下看,喜欢的还可以点击推荐和收藏。在举粟子前,我先讲讲service是什么?有什么作用吧?免得还有人糊涂。 需求分析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层? 相关资料Yii2框架中,有必要再分离service层么?:https://segmentfault.com/q/1010000003849810 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |