




controller层接收和转发请求
service层处理业务逻辑
repository层操作模型
traits封装常用组件
controller层接收和转发请求
service层处理业务逻辑
repository层操作模型
traits封装常用组件
工作前一年,基本都不抽的,后来经验多了慢慢知道了,尽量要保证控制器的简洁,带有逻辑的都单独逻辑层,提高代码复用性。要不然项目越做越大,难以维护。model层尽量只做数据库相关的东西,而不能代替逻辑层。(早期用tp的时候,经常把model层当逻辑层来用,实际上是不好的习惯 )
最后你可能就是把控制器的代码,剪切到 service 里,,,有什么不一样吗,,,
每次看到这个问题都各有所见,也都不乏道理。我觉得代码编写设计尽可能规范就行。可能是语言规范,框架规范,公司规范。我自己也是用了,跟大佬 @PHPer技术栈 差不多,可能需要有这个思想和习惯,但有时候碰到及其简单的业务,也没啥扩展的可能,个人觉得没有必要,假如本来就很小的项目,我是觉得没太大必要做得工程化,理论结合实际才可行。
我看了上面大佬的回复发现都在说repository这个, 不过这个的话我记得都要有接口类支撑 /狗头,说到底=service
controller 负责调度分发,拼接参数
request 负责验证参数
service 负责处理部分逻辑
actions 负责处理单一行为
utils 公共工具类
traits 懂得都懂
其他目录与本帖无关
我目前在用的是这个模式,也是在论坛里面看到的 ,
因为就算你用了service模式,不过是把原本在控制器里面的代码都扔给了service而已,
加一个单一行为类来处理部分代码量较多的地方岂不是美滋滋;