求救,我真的不懂MVC

想請問 php 的 mvc原理是什麼?我百思不得其解呀~?這真的好複雜!我是傳統php 寫法,就是HTML php mysql 都在同一頁,如何轉到mvc不吃力?

阅读 5.6k
12 个回答

简单说一下MVC, 首先说一下层次定义:

  • 视图(View):用户界面。
  • 控制器(Controller):业务逻辑
  • 模型(Model):数据保存

其次,看图好说话。
图片描述

最后,上面的大神们官话都说的很多了,我来用白话说说MVC的关系。打个比方,你现在的工作HTML php mysql 都在同一頁, 就好比一个家庭厨房,客人点餐(view), 你接单(Controller), 你做菜(Model), 你摆盘上菜(view)都是你一个人完成的。有错吗?对于家庭厨房来说显然没有。然后新年到了,之前平均每天就5个客人点菜,过年这天突然有100个人点菜,你懵逼了,眼看着大把大把的钱赚不到啊,累得跟粑粑一样,就做了10个客人。怎么办!你决定拼爹了,找了老爸投资100万。于是,你请了美女小花前台负责招待客人(view),你有了自动点餐系统(Controller),你请了1个打杂的负责切菜(Model1),你请了1个厨师负责油炸食品(Model2),你请了1个厨师负责面点(Model3),你清了1个厨师负责炒菜(Model4), 然后你就了一个高效的餐馆结构:

  • 客人甲点菜,美女小花通过电子点餐平台下单:炸丸子, 小笼包,腊肉唐芹,红烧肉。
  • 于是,油炸师傅开始做炸丸子
  • 于是,面点师傅开始做小笼包
  • 于是,炒菜师傅开始抄腊肉唐芹,红烧肉
  • 没有于是,打杂师傅依旧不停的在准备各种配料爱谁谁
  • 客人乙点菜,美女小花又蹦蹦跳跳的去下单了:炸春卷,炸丸子,炸饺子
  • 于是,油炸师傅疯了,累成了粑粑
  • 于是,面点师傅跟炒菜师傅跟在外面抽烟休息看着油炸师傅累成了粑粑
  • 没有于是,打杂师傅依旧苦逼的不停的在准备各种配料爱谁谁

这就是MVC的基本核心意义:各司其职。 粗狂的说,在成开发流程中:做前端的就负责view,做后端的就负责Controller,做数据的就负责Model。 至于如果是个人做开发该怎么办?简单:框架,框架,框架!好的框架能让你更好的理解MVC的结构,重塑开发习惯,延伸开发思维方式。

我个人对php框架的推荐:

  • Codeigniter 这个算是PHP MVC框架的爷爷,国内好几个框架都是山寨这个的。这个适合第一次接触MVC的用户,这个逻辑非常清晰适合初学者。
  • Laravel 适合中高级的php程序猿,好用到爱不释手,把程序猿从繁重的配置工作中抽离。

mvc不是什么原理。是一种分类。

程序员在长期的开发中发现,程序可以分为这几个部分:控制器C负责居中调度,模型M负责数据存储,视图V负责数据展示。

就形成了 mvc

不光是PHP,在其它编程语言中,MVC也是一样的原理,即Model、View、Controller,用户所有的请求访问都交由Controller负责,它调度Model(数据模型)View(视图),然后把组装好数据的View返回给用户,这样做的好处是一套Model可以用于不同的ViewViewModel不必知道对方的存在,它们不用耦合在一起。具体的可以找一些小例子研究一下。

刚开始不懂很正常,你可以去看看thinkphp3.2 CI 这些容易上手的mvc框架,然后在实践中领会其中的意义

从不懂---》懂一点 ---》懂了 ---》不懂了。知道的越多,懂的越少。哈哈,好好加油。

MVC,一句话理解:高内聚,低耦合。 在来一句:单一职责.
分模块,这样各自负责自己的事情,不要和别层耦合在一起。一层改动的时候对上层影响降到最低。

过一年你就懂了!

mvc主要作用就是前后端分开,易于维护,
view写html 部分,
controller处理数据(比如密码加密 修改成数据库要存的格式)
model 做数据库操作
view请求传参多用ajax或者所用框架的调用方法, view<-contrller-> <- model 用框架的方法
mvc的思想我理解的比较low,记一下,剩下就是看手册 创建文件命名等固定格式(这就include一下,就把各部分连接在一起)传参 接受参数 没了,再看下访问路由规则就可以。

之前我也觉得不好理解。去网上找个thinkphp框架视频来看,自己再动手写一写项目就会了。

概念不理解就多实践,可以先去看一下入门学习型MVC框架“BroPHP”,不了解的地方就“var_dump”,“exit”手动打短点调试。

用框架写个项目,你就能理解了

主要还是自己要多撸代码、

做几个项目自然就会了、

光看都是虚的

HTML php mysql 都在同一页
当这一页需要修改的时候,你有感觉吃力吗
有的话试试 一些PHP框架 应该就可以理解了

推荐问题
宣传栏