零基础可上手thinkphp mvc架构,关键在于厘清模型处理数据、控制器调度流程、视图负责展示的分工协作;控制器在app/controller下接收请求并调用模型与视图,模型在app/model下封装数据库操作,视图在app/view下用模板标签展示数据。

零基础也能上手ThinkPHP的MVC架构,关键不是背概念,而是清楚每个部分“谁干啥、放哪、怎么连”。只要理清模型处理数据、控制器调度流程、视图负责展示这三件事的分工和协作方式,项目结构就自然成型了。
控制器(Controller):请求入口和业务调度员
控制器是用户访问的第一站,它接收URL请求(比如 /user/index),决定调用哪个模型、渲染哪个页面。在ThinkPHP 6中,控制器文件放在 app/controller 目录下,类名需以 Controller 结尾,方法默认是公开的入口操作。
- 新建一个 IndexController.php,继承 \think\Controller
- 写一个 index() 方法,在里面调用模型获取数据,再用 fetch() 渲染视图
- 方法返回的内容会自动交给框架输出,无需手动 echo 或 exit
模型(Model):专注跟数据库打交道
模型不是“数据库本身”,而是你为某张表(比如 user 表)写的操作规则封装。它不关心页面长什么样,只管查、增、改、删是否准确、安全。默认放在 app/model 目录,类名与数据表名对应(如 User 模型操作 user 表)。
- 模型类继承 \think\Model,就能直接使用 select()、find() 等方法
- 数据库配置写在 config/database.php 中,填好 host、username、password、dbname 就能连上
- 控制器里用 User::all() 或 (new User())->where('id', 1)->find() 调用,不用 new 太多实例,推荐静态调用
视图(View):纯展示,不写业务逻辑
视图就是 HTML 文件,放在 app/view 对应目录下(例如 Index/index.html)。它只负责把控制器传来的数据,用简洁语法显示出来,不能执行数据库操作或复杂判断。
- 模板变量用 {$name} 输出字符串,{:func()} 执行函数,{if $status}...{/if} 做简单条件
- 控制器用 $this->fetch('index') 加载这个文件;若目录层级深,写成 $this->fetch('user/list')
- 避免在HTML里写 PHP 的 foreach 或 if,优先用 ThinkPHP 模板标签,更安全也更易维护
让三者真正串起来:一个最小可运行例子
假设你要显示用户列表,三步就跑通:
- 在 app/controller/UserController.php 中,index() 方法查出用户数据并传给视图:$users = User::select(); $this->assign('list', $users)->fetch();
- 在 app/model/User.php 中,定义一个空类 class User extends \think\Model {},框架会自动匹配 user 表
- 在 app/view/user/index.html 中,用 {volist name="list" id="vo"}{$vo.name}{/volist} 循环输出姓名
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











