ThinkPHP里的MVC

本文详细介绍了ThinkPHP框架中MVC模式的应用方式。Model层通过M()和D()方法实现数据库操作,View层负责呈现HTML页面,Controller层处理用户请求并调用Model层处理数据后返回给View层显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ThinkPHP里的MVC

  1. M:Model
    model对应所有的数据操作,相当于将数据库相关进行了一次封装,每个model就是数据库里的一个表。
    而且有两种操作模型的方式:

    1. M() 方法:直接得到数据库里的表,没有高级功能,只能手动进行CURD
    2. D() 方法:实例化model对象,不仅可以进行CURD的原子操作,还可以使用ThinkPHP提供的高级方法(自动验证、自动完成等)。

    D() 方法实例化model对象就体现出了构建model这一层封装的优势:
    对数据的处理只需要在model里放一份代码,避免逻辑混乱的情况。

  2. V :html
    view在web里是浏览器加载的页面,那么就是html

  3. C :Action
    每个action对应于一个URL请求,换句话说就是用户的每一个动作(打开某个页面,提交某个数据)都放在一个action里完成。

    - action收到用户的请求(一个URL地址)
    - 把数据判断加工,放进view里(这里是用到model的部分)
    - 向用户展示结果页面(这里是用到view的部分)
    

MVC把 数据 –> 视图 的过程进行了横向的拆分,让整个工程结构简单,易于维护,是一种陈旧但又经典的设计模式。

### ThinkPHP MVC 架构详细介绍 #### 模型 (Model) 模型层主要负责数据逻辑处理,通常与数据库交互。在ThinkPHP中,模型类用于封装业务规则、定义属性以及提供方法来操作这些属性。这使得开发者能够专注于如何获取和修改数据而不必关心具体的存储细节[^1]。 ```php namespace app\index\model; use think\Model; class User extends Model { protected $table = 'users'; } ``` #### 视图 (View) 视图部分用来展示给用户的数据表示形式。它接收来自控制器传递过来的信息并将其渲染成HTML页面或其他格式返回给客户端浏览器显示。为了保持良好的分离度,在ThinkPHP项目模板文件一般存放在`view/`目录下,并且支持多种模板引擎如Blade等[^3]。 ```html <!-- 存储路径:application/index/view/user/info.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <h1>{{ user.name }}</h1> <p>Email: {{ user.email }}</p> </body> </html> ``` #### 控制器 (Controller) 作为连接前端界面同后台服务之间的桥梁角色存在;一方面接受HTTP请求解析参数执行相应动作,另一方面调用对应的模型完成特定功能后再把结果反馈回去更新到界面上去呈现出来。对于ThinkPHP而言,默认情况下所有的控制类都应该继承自`\think\Controller`基类[^5]。 ```php namespace app\index\controller; use think\Controller; class UserController extends Controller{ public function index(){ // 获取所有用户列表 $list = model('User')->select(); // 将查询出来的数据分配给模板变量 $this->assign([ 'userList'=>$list, ]); // 渲染模板输出 return view(); } } ``` 此外,还有一种特殊的控制器称为事件控制器(Event Controller),这类控制器主要用于处理一些内部触发的动作而不是直接由外部HTTP请求引起的。它们通常是被其他组件或者定时任务所调用而不会暴露于公网之上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值