到底啥是Zend Framework MVC设计模式?

MVC (Model-View-Controller)模式,即模型-试图-控制器模式,其核心思想是将整个程序代码分成相对独立而又能协同工作的3个组成部分,具体的功能如下:

控制器(Controller):控制层。起到控制整个业务流程的作用,实现View层跟Model层的协同工作。

模型(Model): 数据业务逻辑层。实现具体的业务逻辑、状态管理的功能。

视图(View):表示层。就是与用户实现交互的页面,通常实现数据的输入和输出功能。

通俗的讲:

控制器(Controller)- 程序员编写程序应有的功能(实现算法等等)。

模型(Model)- 数据库专家进行数据管理和数据库设计。

视图(View)- 界面设计人员进行图形界面设计。

再通俗的讲:

控制器(Controller)- 起到一个方向指导的作用,它不进行任何数据具体的操作,数据库业务逻辑都交给Model来去处理,在控制器中只调用就可以。比如我要查询一个表中数据,Controller中只调用Function Show(参数),具体的Show(参数)在Model中实现。

模型(Model)- 数据库专家进行数据管理和数据库设计,具体的Show(参数)实现方法。

视图(View)- 没得讲,就是我们所谓的美工设计。

这个MVC设计模式,有点像现实中我们去饭店吃饭的过程。当你到一个饭店吃饭,过程是这样的,首先你得点菜啊,不用喊,一个光溜水滑,埋了八汰的小服务员就会整个小本来你面前,"先生,你来点啥?",你看看菜谱,"给我整个小盘鱼香肉丝,再加一碗米饭。""好的,先生稍等。"说着服务员一溜小跑朝后厨方向,"那啥。。。告诉厨师别放姜啊!~~"。。。带会儿,服务员就把你要的饭菜给你端上来了,"先生请慢用~~有啥需要帮忙的,尽管喊我。"你吃的狼吞虎咽的,根本不知道里面放的青椒妈的都没洗~~~

就这么一个简单的你要饭的过程就可以用MVC将其描述一下,你呢就相当于View,服务员呢就相当于Controller,而那个不洗青椒的该死厨师就是Model。你一开始跟服务员点菜,就相当于我们的浏览器向服务器发出请求,服务员将你要吃的菜交给后厨的师傅,就相当于控制层将浏览器发过来的请求交给业务逻辑层来处理,而它根本不管厨师到底咋做这个菜,反正你能给我鼓捣出一盘鱼香肉丝就成,青椒洗不洗那是他的事,这也就是我们常从老鸟口中听到的"封装",封装好啊,封的你连青椒没洗的鱼香肉丝都能吃的喷香,嘻嘻~~当服务员把一盘冒着热气的鱼香肉丝端到你面前的过程,就相当于业务逻辑层处理完后把相应传回给浏览器,然后通过浏览器显示给用户。这样就实现了一个简单的MVC协调交互,也不知道你明白点没有。。。

就拿一个简单的登陆模块说,需求是你输入一个用户名、密码,如果输入的跟预先定义好的一样,那么就进入到正确页面,如果不一样,就提示个错误信息"你Y别在这儿蒙我,输入的不对!"。

这个小小的模块中,起始的输入用户名密码的页面跟经过校验后显示的页面就相当于View,而这里还需要一个Controller页面,就是用于接收输入进来的用户名密码,还有经过校验后返回的一个Flg(此Flg就是用于判断你输入的是否正确,而跳转到相应的页面的),最后还缺一个Model,那么就是你那个用于校验的类了,他就是处理你输入的是否跟预先订好的一样不一样的,之后返回一个Flg。这样就完全实现了逻辑跟页面的分离,我页面不管你咋整,反正我就一个显示,而Controller呢也不管你Model咋判断对不对,反正我给你了用户名跟密码,你就得给我整回来一个Flg来,就跟服务员根本不管厨师青椒洗不洗一样,而Medol呢,则是反正你敢给我个用户名跟密码,我就给你整过去个Flg~~如果看到这你有点茅塞顿开了,待会就试验着写写吧!!

现在在开发WEB应用的时候,比较流行的一种做法就是使用"MVC"结构,使用如此方式去开发WEB应用程序,逻辑性强、简浩明了,使程序设计起来更加方便,快捷。何为"MVC"呢?简单的来说,它就是"模型(Model)"、"视图(View)"及"控制器(Controller)"的结合体,也就是所有的"三层"抽象结构,当然这里所说的"MVC"是针对WEB上应用而言的,"使代码和页面设计分开"便是其主导思想,这一思想在使用JavaServlet/JavaServerPages技术的"Struts"中表现的淋漓尽致,有兴趣的可以去Http://Jakarta.Apache.Org/Struts看看,这种设计模式使的程序设计人员可以专注于代码的设计、编写及调试,网页设计人员可以有更多的时间去投入设计而不用理会具体的功能实现,这种分工方式完全适应大型项目或企业级的分布式应用开发。

从PHP5的推出可以看到,其中的面向对象功能越来越完善,使用PHP来开发大型的商业网站或者分布式企业应用已经成为可能,如果再结合Zend Optimizer,已经实现了代码的封装性。

如何在PHP中使用"MVC" 设计模式去开发WEB应用呢?记住一点(代码和页面设计分开),用一个简单的例子演示一下,比如要从数据库中查询出会员的资料以显示在网页上,这里就需要考虑到两点:1.连接数据库并取出会员资料,2.把会员资料显示在网页上,连接数据库我们使用一个数据库的类,把它叫做"DB"类吧,这个类此时就扮演了 "模型(Model)"的角色,接着我们需要编写一个操作"DB"类的程序以取出数据,这个程序所扮演的角色就是"控制器(Controller)",它接受客户端"POST"或"PUT"的数据,然后再调用"DB"类以取出数据,把这些数据都存放在"控制器(Controller)"中,最后把数据传递给"视图(View)"并按照一定的排版格式显示出来,从上面的分析可以看出,模板在这里就是扮演了"视图(View)"的角色,当然仅仅一个模板类是不能说成是MVC的,真正的MVC不是这么简单的,具体可以参考一下"JSF"。

http://www.bkjia.com/PHPjc/752463.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/752463.htmlTechArticle到底啥是Zend Framework MVC设计模式? MVC (Model-View-Controller)模式,即模型-试图-控制器模式,其核心思想是将整个程序代码分成相对独立而又...

php zend mvc 配置,理解Zend Framework 的MVC模式_PHP教程相关推荐

  1. 使用zend studio配置Xdebug调试PHP教程

    之前我介绍了PHP开发工具Zend Studio7入门使用教程,其实使用zend studio调试PHP非常方便,zend studio默认支持调试工具zend debugger也允许使用第三方调试工 ...

  2. zend studio配置调试(Xdebug方式)

    1.下载xdebug http://xdebug.org/download.php 我下的是PHP 5.4 VC9 (32 bit) [当前系统php是php5.4.14(win32)版本] 2.配置 ...

  3. Zend Debugger 配置

    到官网 http://www.zend.com/en/products/studio/downloads 下载 windows 版 Studio Web Debugger 打开下载得到的压缩包,里面有 ...

  4. Zend Frame 配置信息实例|开源中国社区

    Zend Frame 配置信息实例 view sourceprint?01 [production]  ; logs  resources.log.stream.writerName = " ...

  5. 2003 iis php mysql_阿里云完美教程 Window2003 iis+mysql+php+zend环境配置

    在我的使用过程中只遇到几个小问题: 一.HTTP 错误 403.1 – 禁止访问:执行访问被拒绝 原因是执行权限不够,解决的方法是: 解决方法一: 打开"管理工具"的"I ...

  6. window2003 iis+mysql+php环境配置_Window2003 iis+mysql+php+zend环境配置教程

    在我的使用过程中只遇到几个小问题: 一.HTTP 错误 403.1 – 禁止访问:执行访问被拒绝 原因是执行权限不够,解决的方法是: 解决方法一: 打开"管理工具"的"I ...

  7. Spring MVC 学习总结(一)——MVC概要与环境配置 转载自【张果】博客

    Spring MVC 学习总结(一)--MVC概要与环境配置 目录 一.MVC概要 二.Spring MVC介绍 三.第一个Spring MVC 项目:Hello World 3.1.通过Maven新 ...

  8. 理解MVC—从实例出发:基于MVC模式的简易算术计算器

    MVC模式:MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). ...

  9. Spring MVC - 配置Spring MVC

    写在前面的话: 现在开始一段新的学习历程:Spring MVC.还是按照原来的三步走学习模式(what.why.how)进行讲解. 1.Spring MVC是什么(what) Spring MVC属于 ...

最新文章

  1. 拥抱Node.js 8.0,N-API入门极简例子
  2. vc sp6 中英文和补丁下载地址
  3. Caffe中Interp层的使用
  4. 简单了解tengine
  5. GET请求与POST请求的区别
  6. 「leetcode」57. 插入区间:【模拟插入】详细讲解!
  7. net根据list创建xml_#一起学spring#创建多模块项目
  8. linux创建2g文件,创建一个2G的文件(Linux命令dd)
  9. 浪潮服务器开启虚拟化功能,浪潮服务器-虚拟化解决方案.ppt
  10. 通信芯片sx1278-基于LORA SX1278无线模块的STM32点对点通信简单实现
  11. 光明行动:共同呵护好孩子的眼睛——广西实施光明行动实地考察调研综述
  12. 系统调用【简单总结】
  13. 【2021-04-25】APP逆向之某智网加密数据
  14. 【exe4j】如何利用exe4j把java桌面程序生成exe文件
  15. 无线接入控制服务器(ac),无线AP控制器是什么?无线AP与无线AC的区别
  16. 北大核心,sci和核心期刊,文章几区,文章下载
  17. php导出数字0,php导出excel分析(phpexcel-避免数字前面的0消失)
  18. 电脑中恶意插件后自动安装软件一般有哪些?(软件及安装路径整理中,持续更新)
  19. ADSL 虚拟拨号常见问题
  20. 2021春季工程伦理期末考试(可ctrl+f)

热门文章

  1. 深度学习的最新研究进展(三)
  2. JZOJ 1385. 直角三角形
  3. Oracle中split功能的实现
  4. 在实际项目中,如何选择合适的机器学习模型?
  5. 什么是线程安全和线程不安全
  6. fedora 安装chrome
  7. win7下程序运行权限问题解决方案
  8. 【转】RegSetValueEx运行时失败,返回代码为5,解决方法
  9. 项目中遇到的某些问题及解决办法(一)
  10. 【实践】数据科学在搜索、广告、推荐系统的应用实践.pdf(附下载链接)