ThinkPHP 8 模块全解析
ThinkPHP 8 模块全解析
每个目录存在的意义、职责与实战示例。理解结构,就是理解框架的灵魂。
整体目录结构一览
├── app/ # 应用核心目录
│ ├── controller/ # 控制器
│ ├── model/ # 模型
│ ├── view/ # 视图模板
│ ├── middleware/ # 中间件
│ ├── event/ # 事件
│ ├── service/ # 业务服务层
│ ├── common/ # 公共函数与基类
│ └── AppService.php
├── config/ # 全局配置
├── route/ # 路由定义
├── public/ # 入口与静态资源
├── runtime/ # 运行时缓存/日志
├── vendor/ # Composer 依赖
└── .env # 环境变量
控制器(controller)—— 请求调度中心
接收 HTTP 请求,调用业务逻辑,返回响应。不处理具体业务,只做参数校验与任务派发。
模型(model)—— 数据与业务核心
封装数据库操作、定义关联与修改器。数据逻辑集中处,一张表对应一个模型。
视图(view)—— 数据呈现层
存放 HTML 模板,使用原生 PHP 或模板标签渲染变量。控制器将数据传递至此。
中间件(middleware)—— 请求拦截器
在控制器前后执行,用于鉴权、日志、跨域等通用处理,实现切面编程。
事件(event)—— 观察者模式
当“用户注册”等动作发生时,自动触发监听器(发邮件、写日志),解耦后续操作。
服务层(service)—— 复杂业务协调者
非框架强制,但强烈推荐。封装跨模型的复杂逻辑,让控制器保持轻薄优雅。
配置目录(config)—— 集中参数管理
数据库、缓存、应用等所有可调参数均在此定义,支持 .env 环境变量覆盖。
路由(route)—— URL 到逻辑的映射
定义优雅的 URL 规则,支持分组、中间件绑定和资源路由。让接口清晰可控。
public 目录 —— 唯一对外窗口
存放 index.php 入口文件和 CSS/JS 等静态资源。所有 HTTP 请求都指向这里,保证核心代码安全。
runtime —— 系统运行痕迹
存放编译文件、缓存、日志、Session 等。需可写权限,是框架高效运行的临时仓库。
vendor 与 extend —— 第三方与自定义扩展
vendor:Composer 管理的依赖库,不可手动修改。
extend:自定义非 Composer 类库,遵循 PSR-4 即可自动加载。
一次请求的完整协作流程
public/index.php 启动框架 → 路由 匹配到控制器方法 → 执行 中间件(鉴权) → 控制器 调用 模型/服务 处理业务 → 数据交给 视图 渲染 → 返回 HTML/JSON 给浏览器。
这正是 ThinkPHP 8 践行 MVC 分层架构、实现高内聚低耦合的核心路径。
本站所有文章、数据、图片来源于网络,仅供学习使用,如有侵权,联系删除!