看到你修改了问题,并对问题做了详细描述,那么,我来好好的回答这个问题,其实整套分层的意义很简单,不外乎围绕的是根本原因:

程序 = 数据结构 + 算法

所有的层的拆分都是围绕着数据结构和算法来整理的,分层的根本意义也是为了让逻辑更加清晰易懂,首先,来看看你摘自TP官网的定义:

ThinkPHP支持模型的分层 ,除了Model层之外,我们可以项目的需要设计和创建其他的模型层。

通常情况下,不同的分层模型仍然是继承系统的thinkModel类或其子类,所以,其基本操作和Model类的操作是一致的。

例如在index模块的设计中需要区分数据层、逻辑层、服务层等不同的模型层,我们可以在模块目录下面创建model、logic和service目录,把对用户表的所有模型操作分成三层

数据层:app\index\model\User 用于定义数据相关的自动验证和自动完成和数据存取接口

逻辑层:app\index\logic\User 用于定义用户相关的业务逻辑

服务层:app\index\service\User 用于定义用户相关的服务接口等

其实他官方的解释已经挺清楚了,但是如果你没有接触复杂的业务可能不太理解这三层的定义,我逐个就我遇到的一些业务问题来做详细的讲解:

数据层

数据层在这里其实指的是数据库表的数据,一般来说数据层会包含一整套相对于数据表的映射,这一套映射主要的是基本的字段名称和数据类型的映射,比如数据表order里有一个字段叫做order_sn并且是16位的字符串类型,那么在数据层模型里可以定义这套映射,而这套映射的根本目的其实也是为了实现程序做最基础的数据存储类型的验证,当然了,这套基本的自动验证也是依赖于框架来实现的。

然后就是自定义的一些自动验证了,比如数据类型是否是url,对数据进行安全过滤等等;也就是说,这一层完成数据的存储处理。当然也可以完成一些查询处理,如时间格式化等等。

逻辑层

逻辑层,从程序方面来思考,应该叫做算法层,这一层处理具体的一些数据的业务逻辑,或者做事务性的一次性存储多个数据表数据等,这一层最好也把大的复杂逻辑尽量拆分成小的业务逻辑,减少业务的耦合性。主要做的还是与具体业务相关的业务逻辑。

服务层

服务层一般来说是直接与控制器打交道的,提供给控制器进行调用的一层,这一层可以让多个控制器共用,而服务层所调用的数据业务层应该是逻辑层。

从以上三个方面来看,数据层可以说是程序的数据,而逻辑层是程序的算法;当然这个角度又是从宏观角度来看待的。而服务层又能把各个逻辑关联起来,起到很好的整体性,能提供给应用上层调用,减少代码的冗余,可以更好的复用。

另外我看到有人回答说用java来写,我觉得这就是语言论了,程序的根本就是思想,老是想着语言相关性,不知道意义何在,我更趋向于语言无关性,借鉴不同的语言特性思想,来表现不同的业务逻辑。

php粉层,thinkphp 模型分层相关推荐

  1. thinkphp模型层Model、Logic、Service讲解

    thinkphp模型层Model.Logic.Service讲解 时间:2014-08-24 15:54:56   编辑:一切随缘   文章来源:php教程网 已阅读:771 次 js特效源码,就从这 ...

  2. 互联网协议套件(TCP/IP)及七层OSI模型

    互联网协议套件(英语:Internet Protocol Suite,缩写IPS)[1]是网络通信模型,以及整个网络传输协议家族,为网际网络的基础通信架构.它常通称为TCP/IP协议族(英语:TCP/ ...

  3. 基础进阶ODS、DWD、DWM等模型分层与项目实战

    来源:大数据范式 全文导读 数仓在建设过程中,对数据的组织管理上,不仅要根据业务进行纵向的主题域划分,还需要横向的数仓分层规范.本文作者围绕企业数仓分层展开分析,希望对你有帮助. 从事数仓相关工作的人 ...

  4. “6.1国际儿童节”与开放系统互联7层框架模型

    "6.1国际儿童节"与开放系统互联7层框架模型 儿童是我们的未来,他们生活在开放系统互联7层框架模型(手机环境)之中. 数据包是一个最基本的概念.但是,数据包在什么环境中传输?答案 ...

  5. OSI七层协议模型、TCP/IP四层模型学习笔记

    1. OSI七层和TCP/IP四层的关系 1.1 OSI引入了服务.接口.协议.分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型. 1.2 OSI先有模型,后有协议,先有标准,后进行 ...

  6. ISO七层协议模型架构、各层的解析及其协议

    什么是ISO? ISO是"国际标准化组织"的英文简称,其全称是International Organization for Standardization.ISO成立于1947年2 ...

  7. Paddle网络结构中的层和模型

    简 介: 这是 Paddle中的模型与层 的内容学习笔记.对于Paddle中的层的构造,操作进行了初步的测试与相关的学习. 关键词: Layer,Paddle #mermaid-svg-gE0XomQ ...

  8. thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法)

    thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法) 一.总结 记得看下面 1.获取器的作用是在获取数据的字段值后自动进行处理 2.修改器的作用是可以在数据赋值的时候自动进行转换处 ...

  9. “让Keras更酷一些!”:层与模型的重用技巧

    作者丨苏剑林 单位丨追一科技 研究方向丨NLP,神经网络 个人主页丨kexue.fm 今天我们继续来深挖 Keras,再次体验 Keras 那无与伦比的优雅设计.这一次我们的焦点是"重用&q ...

  10. lambda层保存模型出错_保存您的lambda,以备不时之需-保存到文件

    lambda层保存模型出错 介绍 简短的帖子,描述了如何将Java lambda持久化到文件中以在不同的过程中重复使用. 序列化Lambda Java 8中引入的Lambda使函数成为Java语言的一 ...

最新文章

  1. 如何避免重复提交?分布式服务的幂等性设计!
  2. python可以干什么-学了Python可以用来干什么呢?
  3. mysql 查询商品列表 显示tag_让前台页面商品列表显示后台数据库中的商品
  4. python构建huffman树_python:哈夫曼树,PythonHuffuman
  5. cookie、session和token原理
  6. python学习(十八)爬虫中加入cookie
  7. webserver总结
  8. MQL5 编程基础:列表
  9. 第五届“强网”拟态防御国际精英挑战赛——预选赛入围名单公布!
  10. win32 WaitCommEvent
  11. Keil的AC6与AC5中文手册
  12. CLIP CLAP
  13. 课程能力建设:提高五年制高职教学有效性的重要途径
  14. 运动用品品牌排行榜,2022年最值得买的运动装备
  15. 金属结构保温板的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  16. 实用技能一:防抖与节流
  17. Django连接mysql数据库步骤非常详细
  18. 2021年中国物联网通信板块现状及重点企业对比分析(移远通信VS广和通VS和而泰VS拓邦股份VS移为通信)[图]
  19. 当前电子鼻系统数据处理中常用的模式识别技术
  20. matlab常数编程,Matlab编程,求解出卡普雷卡尔(Kaprekar)常数

热门文章

  1. 关于本地yum源的创建方法和使用
  2. springboot 打 jar 包分离依赖 lib 和 配置文件
  3. Android实现计算器布局(相对布局)
  4. matlab 扩大虚拟内存,matlab 扩大虚拟内存
  5. java统计空格代码_java统计文件中字符,数字,汉字,空格数目
  6. python二进制解码_使用python3对二进制数据进行编码和解码,以将其包含到JSON中...
  7. 恒生电子offer含金量_收获8个Offer,来给大家分享备战和面试经验
  8. java我的世界1.6.2_我的世界1.6.2
  9. java B2B2C springmvc mybatis电子商城系统-分布式配置中心(Spring Cloud Config)
  10. 一文读懂MapReduce