什么是MVC
1 MVC是什么
MVC由三部分组成:模型层(model),视图层(view),控制层(controller)。
其实光从这三部分的名字就可以看出个大概,模型层嘛,肯定是与数据库有关,视图层,嗯,视图,肯定和眼睛看有关,控制层,应该偏向和逻辑挂钩吧。如果能想到这样其实应该还不错,哈哈哈。
然后我们来具体从一个Web应用例子的交互逻辑来谈一谈MVC:
我们假设百度网站就是基于MVC模式构建的(假设哦),小明想用百度查一查关于汽车的信息,于是输入了关键词“汽车”,搜索了很多与汽车相关的信息,这些展示在小明面前的页面,小明看到的页面、数据信息这些其实就可以看成视图层。
但是其实在小明点击了搜索之后,“汽车”这个关键词是传入到了服务器应用,然后服务器根据“汽车”这个关键词,到数据库中去拿关于汽车的数据,拿到数据后,再将数据交给前端去渲染出来,呈现在小明的面前,这个服务器接收前端指令然后根据指令获取数据再将数据返回给前端的过程就可以理解为控制层。
至于最后一个模型层呢?控制层中到数据库中去获取数据就要通过模型层才能实现与数据库之间的交互。由此可见模型层就是负责与数据库直接进行交互的。
再理一理这个例子逻辑就是:小明通过视图层向控制层发来了“汽车”这个关键词,告诉控制层我要获取所有的汽车相关的信息,控制层收到后,通知模型层,你去把数据库中所有的关于汽车的信息给我拿出来,模型层从数据库拿到所有数据后,将数据交给控制层,控制层再将数据交给视图层,视图层将数据渲染出来,呈现在小明的面前。
总结:视图层是负责与用户交互的,模型层是负责与数据库交互的,而控制层是将视图层和模型层联系在一起。
2 模板引擎
php是一种html内嵌式的在服务器执行的脚本语言,但是在php有很多可以使php代码和html代码分开的模版引擎,例如Smarty Twig Haml Liquid等
原理:一个庞大的正则表达式替换库
3 单入口
有一个处理程序的文件处理所有的http请求,根据请求似的参数不同区分不同的模块和操作的请求
所有的文件都经过index.php 可以做一个统一的安全性检查
集中的处理程序
URL不美观需要重写URL
处理数据的效率稍低
4 MCV框架
ThinkPHP Yii2 CI Phalcon
5 工作原理
Model 数据模型层
View() 视图层
Controller(控制器) 业务逻辑层