laravel 应用分层设计
最新需要开发一个中型复杂的项目,在考虑应怎样进行应用分层,先说一下我的思路:
我准备分为三层
1.Controller层:主要负责验证参数,并调用Service层,返回响应
2.Service层:主要负责业务逻辑并调用Model层
3.Model层:主要和数据库打交道
我个人觉得这三层就可以了,保持简单才是最佳实践
浏览了一些文章有建议在Model和service之间增加Repository由它来对接 Model层
大家觉得有必要吗?
此贴只是讨论,阐述一下我的思路,欢迎大家阐述一下自己的想法哦,多多益善,感谢大家给我提供一些参考
既然分了,我觉得数据仓库(Repository)是有必要的。调用顺序应该是这样:控制器→services→数据仓库→模型。
它的作用相当于就是对外提供数据处理(增删改查)的方法,符合单一原则。例如,原来的用户数据是通过模型去获取数据库的数据,现在需要增加一层缓存层,我只需要修改数据仓库里获取用户数据的方法就可以,而不需要去修改业务代码,也就是解耦。
等 Service 互相调用就难受了

有案列吗 ?小白想了解大型的架构框架学习学习
个人认为太麻烦,分层太多,每次开发的时候就会建立太多文件,反而加大开发的复杂,建议一般三层够了,特别是个人开发,怎么方便怎么来。
看项目复杂程度把 如果简单项目,分层多是累赘
喜歡使用DB形式執行sql操作上方便些,當然Model也有它的好處。
分层的话主要就这三层:
入口:Controller、Job、Command、EventListener。 入口仅做参数判断整理,权限校验和对业务的调用。
业务:Service。 业务处理具体的业务逻辑,也是代码量最多的部分,要求尽量做到可复用。
数据:Model、Event。 定义模型关系,对数据存取过程进行转换,在业务和入口间进行传递。
其余的都服务于以上三层。