程序架构

当前位置/ 首页/ 程序架构/ 正文

thinkphp5模型三层结构逻辑层服务层数据层深入解析


thinkphp5.0官方手册大致讲解了MVC三层结构以及模型分层:逻辑层、服务层、数据层,这个其实让很多新手童鞋都不明白,我也是找了很多,财大指出来这么一个思路,官网上是这样讲的:

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

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

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

  • 数据层:app\index\model\User 用于定义数据相关的自动验证和自动完成和数据存取接口
  • 逻辑层:app\index\logic\User 用于定义用户相关的业务逻辑
  • 服务层: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

namespace 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 这个其实就是负责数据库交互的

相关热词搜索:逻辑 模型 结构

分享到:

我要评论

微信订阅

打开微信,点击底部的“通讯录”,点击右上角的 “添加” 搜号码 andk_in 或查找公众号 莎龙 即可。