ThinkPHP6项目基操(9.架构分层)
架构分层
- 一、分层意义
- 二、代码架构
- 三、common层设计
- 四、实践代码
一、分层意义
意义我觉得最重要的是方便维护
,如果代码没有分层,都是写在控制器里,包括了各种参数校验,各种情景判断,各种数据查询返回结果不同,十分混乱,出现问题很难定位,修改需求十分头疼,良好的分层架构可以解决后顾之忧。
二、代码架构
这里借用了某课网老师的图,我又重新画了一遍,我们把代码分为以上5个模块,它们的作用分别为:
模块 | 作用 |
---|---|
控制器 controller | 负责调用业务层,返回组装数据给视图层或api接口 |
业务逻辑层 business | 负责调用第三方库或模型层获取数据 |
基础库 lib | 负责封装特定功能的库或引用第三方类库 |
模型层 model | 负责连接数据库返回数据 |
视图层 view | 负责返回数据到前台 |
三、common层设计
有些模块对于多个应用是可以公用的,所以可以创建一个
common
目录存放所有应用公共的文件,common
目录与其他应用目录同级。如business、lib、model等。
注意:修改文件目录,记得修改文件命名空间和引用该文件的地方。
考虑到后面操作数据可能会用到redis
等,所以这里对model
再分层。
四、实践代码
Model:
<?phpnamespace app\common\model\mysql;
use think\Model;class Demo extends Model
{public function getDemoDataByCategoryId($cateId, $limit = 10){return $this->where("cate_id", $cateId)->limit($limit)->select()->toArray();}
}
Business:
<?phpnamespace app\common\business;
use app\common\model\mysql\Demo as DemoModel;class Demo
{public function getDemoDataByCategoryId($cateId, $limit = 10){$model = new DemoModel();$results = $model->getDemoDataByCategoryId($cateId, $limit);if(empty($results)){return [];}return $results;}
}
controller:
<?phpnamespace app\demo\controller;use app\BaseController;
use app\common\business\Demo;class Index extends BaseController
{public function test(){$cateId = $this->request->param("cate_id",0,"intval");if(empty($cateId)){return show(config("status.error"), "参数错误");}$demo = new Demo();$results = $demo->getDemoDataByCategoryId($cateId);return show(config("status.success"), "ok", $results);}
}
⭐️重磅推荐:免费商用电商系统
ThinkPHP6项目基操(9.架构分层)相关推荐
- ThinkPHP6项目基操目录
前言 ThinkPHP是一个免费开源的,快速.简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的.ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色 ...
- ThinkPHP6项目基操(15.实战部分 阿里云短信redis)
阿里云短信redis 一.安装阿里云短信SDK 二.封装到项目lib中 三.radis记录验证码 1. 安装redis服务 2. 可视化redis管理软件 3. PHP安装redis扩展 4. 配置缓 ...
- ThinkPHP6项目基操(13.实战部分 项目中的自定义异常处理总结 错误页面API错误)
项目中的自定义异常处理总结 错误页面&API错误 前言 一.异常分类 1. 控制器找不到 2. 方法找不到 3. 请求资源不存在 4. 系统內部异常.HTTP异常等 二.异常处理 1. 前置处 ...
- ThinkPHP6项目基操(11.实战部分 部署后台静态页面模板及后台登录页面)
实战部分 部署后台静态页面模板及后台登录页面 前言 一.部署静态资源到项目 1.新建后台静态资源文件夹 二.后台登录页面 1. 目录结构 2. 模板字符串替换配置 前言 网站后台一般是在基础静态页面上 ...
- ThinkPHP6项目基操(4.拦截无效请求 控制器或方法不存在)
拦截无效请求 控制器或方法不存在 一.默认无效请求 二.显示具体错误信息 方法1.配置`config/app.php` 方法2. 配置`.env`环境变量 三.处理错误 1. 方法不存在 2. 控制器 ...
- ThinkPHP6项目基操(2.Nginx配置虚拟域名及简化访问路径)
Nginx配置虚拟域名及隐藏public和index.php路径 一.phpStudy 创建网站 二.隐藏index.php 方法一:vhosts.conf 方法二:phpStudy面板配置伪静态 方 ...
- ThinkPHP6项目基操(1.环境搭建及ThinkPHP6的安装)
环境搭建及ThinkPHP6.0的安装 一.环境搭建 二.安装ThinkPHP6.0 一.环境搭建 服务器:Nginx1.16.1 端口:80 数据库:MySQL5.7.26 端口:3307 PHP版 ...
- php登陆项目,ThinkPHP6项目基操(14.实战部分 中间件处理登录流程)
一.定义中间件 namespace app\middleware; class Check { public function handle($request, \Closure $next) { i ...
- ThinkPHP6项目基操(20.实战部分 数据库操作返回值总结)
数据库操作返回值总结 0. 前言 1. Db类操作数据库 1.1 新增 1.2 更新 1.3 删除 1.3.1 单条删除 1.3.2 批量删除 1.4 查询 1.4.1 单笔记录 1.4.2 多笔记录 ...
最新文章
- AR设备单目视觉惯导SLAM算法综述与评价
- 原生ajax的post操作
- Mybatis-Plus 支持分库分表了?-官方神器发布!
- 为什么人工智能被过度炒作?
- iphone11看信号强度_iPhone11信号怎么样_iPhone11信号差原因|解决办法-太平洋IT百科...
- torch.topk
- 【收藏】linux下用命令方式创建及管理kvm虚拟机
- [leetcode] 108.有序数组转换为二叉搜索树
- util.java_TelnetUtil.java
- win10 后台运行jar包_小编演示win10系统双击运行jar文件的教程
- 程序猿必须要知道的一个内容:客户端+服务端一(源码解析、建议收藏)
- 讲真,灾备的内涵其实很丰富
- JAVA50道基础编程题
- 135批量抓鸡 依赖 古老得RTCS
- 关于华硕电脑FX80GE风扇模式无法调节
- matlab函数零点求法,Matlab之函数零点 | 学步园
- 半导体器件制造封装材料和生产工艺流程(图文介绍)
- UTC时间转成北京时间
- win10管理员无法使用mklink的问题
- 融入动画技术的粒子效果文字动画交互应用