#### thinkphp5模型三层结构逻辑层服务层数据层
* * * * *
thinkphp5.0官方手册大致讲解了MVC三层结构以及模型分层:逻辑层、服务层、数据层,官网上是这样讲的:
ThinkPHP支持模型的分层 ,除了Model层之外,我们可以根据项目的需要设计和创建其他的模型层。
通常情况下,不同的分层模型仍然是继承系统的\think\Model类或其子类,所以,其基本操作和Model类的操作是一致的。
例如,在Home模块的设计中需要区分数据层、逻辑层、服务层等不同的模型层,我们可以在模块目录下面创建model、logic和service目录,把对用户表的所有模型操作分成三层:
1. 数据层:app\index\model\User 用于定义数据相关的自动验证和自动完成和数据存取接口
2. 逻辑层:app\index\logic\User 用于定义用户相关的业务逻辑
3. 服务层:app\index\service\User 用于定义用户相关的服务接口等
三个模型层的定义如下:
app\index\model\User.php
~~~
namespace app\index\model;
use think\Model;
class User extends Model
{
}
~~~
实例化方法:`\think\Loader::model('User')`
Logic类:app\index\logic\User.php
~~~
amespace app\index\logic;
use think\Model;
class User extends Model
{
}
~~~
实例化方法:`\think\Loader::model('User','logic');`
Api类:app\index\api\User.php
~~~
namespace app\index\api;
use think\Model;
class User extends Model
{
}
~~~
实例化方法:`\think\Loader::model('User','api');`
这只是简单地说了这三个层如何声明以及实例化,这让很多想弄明白如何区分这三个层,他们存在的目的究竟是什么?在这三个层具体要写什么代码?对此表示不理解。
其实,官方已经明确说明了,我们没有必要非要硬性区分三个层,我们完全可以全写在一个Model中。
如果想分开写,你记住:
* Model 负责模型定义 比如声明一个User字段自动验证的内容。
* Logic 这是一个逻辑层,说白了就是业务逻辑性的功能写在这个类里。
* Service 这个其实就是负责数据库交互的。
- 目录
- 5.0.10环境配置
- 5.0.10控制器模型对象
- 5.0.10模型初始化
- 5.0.10定义数据对象
- 5.0.10创建数据对象data()方法
- 5.0.10创建数据对象-setAttr方法
- 5.0.10创建数据对象__set()方法
- 5.0.10查询数据对象getData()
- 实例
- 5.0.10保存数据save()方法
- 5.0.10保存数据saveAll()
- 5.0.10更新数据save()
- 5.0.10批量更新数据saveAll()
- 5.0.10删除数据delete()
- 5.0.10删除数据destroy()
- 5.0.10traits详解
- ThinkPHP 5.0 速查表
- 注释
- 环境变量配置
- Model分层
- MVC 逻辑服务数据
- Model分层及多对多关联的建立
- 控制器调用逻辑层
- Session
- 子域名session共享
- 系统错误
- 版本错误
- 返回错误
- Token令牌及身份识别
- 关联查询
- 安装
- Git安装
- Composer
- 扩展
- Composer类
- 非Composer类
- 引用第三方库
- 自定义命令行
- 计划任务
- 调试
- 调试模式
- 监听SQL
- 数据库调试
- 单元测试
- 初始化
- 控制器初始化
- 模型初始化
- 数据缓存
- 实战
- 版本升级
- 从V5.0.17升级到V5.0.18