本身逻辑相之对应的就是业务细节,大部分情况下不存在复用。

Controller 控制器,的作用就是接受请求参数、验证请求参数(在 Laravel 中应当首选使用自定义 Request)、调用 Service 、返回结果给用户

Service 服务,的作用就是在 Controller 把数据传递之后,通过调用 Model 或者 Repository 将数据库查出,后调用 Model 保存数据,一个 Service 对应的就应该是一个业务,不应该把多个业务写道同一个 Service。

Repository 仓库,如其名字,就是一个仓库,通过调用 Model 来查询数据(仅负责查询),其中一些方法就可以被抽象,比如 find、all、page,Repository 应该与 Model 相对应。

Action 动作(可选,因为多数情况下 Service 可以替代它),这里也是作为业务和Model的中间层,可以封装 Model 的增、删、改操作,Action 应该与 Model 相对应。

Model 模型,这一层,不应该直接与 Controller 直接进行互动。C ->(Service|Repository|Action) -> Model,Model 始终不应该扩张,只做模型该做的事情,比如,查询域、转换器、关联关系。

试想,如果没有 Service 和 Repository ,你的 Controller 会包含多少内容。

php多个逻辑如何分为多个逻辑块,php 项目如何分层相关推荐

  1. 蓝绿发布、灰度发布(金丝雀发布) 和滚动发布

    蓝绿发布.灰度发布(金丝雀发布) 和滚动发布 应用程序升级面临最大挑战是新旧业务切换,将软件从测试的最后阶段带到生产环境,同时要保证系统不间断提供服务. 长期以来,业务升级渐渐形成了几个发布策略:蓝绿 ...

  2. 谷粒商城 集群篇 (五) --------- DevOps

    目录 一.项目开发需要考虑的维度 二.什么是 DevOps ? 三.什么是 CI&CD 四.落地方案 五.基于 Spring Boot 项目构建流水线 1. 流水线概览 2. 创建凭证 ① 凭 ...

  3. Kubernetes—部署自动化平台(Jenkins)

    1.项目发布方案概述 (1)蓝绿发布 项目逻辑上分为AB组,在项目升级时,首先把A组从负载均衡中摘除,进行新版本的部署.B组仍然继续提供服务.A组升级完成上线,B组从负载均衡中摘除. 特点: • 策略 ...

  4. petshop详解之五:PetShop之业务逻辑层设计

    五 PetShop之业务逻辑层设计业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分.它的关注点主要集中在业务规则的制定.业务流程的实现等与业务需求有关的系统设计 ...

  5. 毕业生的商业软件开发之路 --- C#基本语法-C#代码模块逻辑框架

    C#基本语法 课程介绍 面向读者说明C#编程语言的基本语法,本章要求阅读者已经掌握了一种计算机高级编程语言,比如VB或C++等,理解变量.数组.条件判断.循环等编程知识.达到了国家计算机等级考试二级的 ...

  6. 浅谈Linux磁盘存储管理续【逻辑卷管理(LVM)】

    一.LVM的基本概念 在对磁盘进行分区大小规划时,有时往往不能确定这个分区要使用的总空间大小,而用fdisk对磁盘分区后,每个分区的大小已经固定了,如果分区设置的过大,就白白浪费了磁盘空间,而分区设置 ...

  7. SAP CRM WebClient UI和Hybris CommerceUI tag的渲染逻辑

    既然一个是BSP,一个是JSP,当然有很多相通之处了. CRM WebUI 每个应用的入口都是search,为了避免application developer重复造轮子,SAP WebUI的框架开发人 ...

  8. petshop4.0 详解之五(PetShop之业务逻辑层设计)[转]

    业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分.它的关注点主要集中在业务规则的制定.业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域( ...

  9. promise的三种状态_一.Promise中核心逻辑的实现

    首先看一下Promise代码: let promise =new Promise((resolve,reject)=>{resolve('成功');//reject('失败'); }) prom ...

最新文章

  1. php链接mysql验证用户登录,PHP连接mysql验证用户名是否存在
  2. MySql数据库驱动类
  3. 【华为云技术分享】计算python程序执行时间
  4. pandas 保存数据到excel,csv
  5. PHP中文分词的实现
  6. JAVA-WEB-错误之-'OPTION SQL_SELECT_LIMIT=DEFAULT'
  7. ios 数字键盘左下角添加按钮_ios数字键盘添加完成按钮
  8. [BuildRelease]Mozilla Build Tools - Autoconf + GNU Make
  9. Atitit.prototype-base class-based  基于“类” vs 基于“原型”
  10. promoter:启动子预测程序(PPPs)软件现状及分析
  11. php读写明华读卡器,rwCard 明华USBIC卡读卡器IC卡读写程序 - 下载 - 搜珍网
  12. Maven的依赖(Dependency)
  13. 迪尼斯神奇英语全32集含教材
  14. socket多线程图形化界面聊天室实例
  15. 阿里香港轻量服务器加上BBR会发生什么?
  16. html链接怎么恢复,Word文档中目录的超链接取消后怎么样恢复?
  17. mldonkey系列之三──Ini文件[zt]
  18. 这几excel操作技巧,每一个都是大神和菜鸟的分水岭!
  19. MultipartFile.transferTo(dest) 报找不到文件错误以及解决方法
  20. Numpy+Pandas+Matplotlib学习

热门文章

  1. 设计潮流趋势|背景图案素材,增加设计对比和补充前景元素
  2. (秋季)秋天海报设计素材模板
  3. 实用UI设计需要学什么软件?
  4. 一维装箱问题 java_c语言来实现贪心算法之装箱问题
  5. ssm框架requestmapping找不到_从MVC原理开始手敲一个MVC框架,带你体会当大神的乐趣...
  6. virtio数据结构总览 | 图
  7. 利用scp在windows和linux之间进行文件和文件夹的数据拷贝
  8. linux下的一些常见命令学习,学习猿地-Linux下的常见命令总结
  9. plsql怎么用字段查表明_PLSQL查询语句
  10. refs win10_Win10PE版本改为专业工作站版开启refs支持工具