MVC介绍
MVC是一种可以简化应用程序开发和维护的设计模式。为了实现这一目的,它将应用程序分割到三个逻辑组件中。
模型(Model)。模型层负责应用程序的业务逻辑。它将封装访问数据库方法并提供一个可以重用的类库。通常,在模型中,你将发现用于数据库抽象、电子邮件发送、校验和验证等机制。
视图(View)。视图层通常包括Web设计或者模板设计等工作。它控制了数据的外观并提供了从用户收集数据的机制。在视图中经常找到视图特有的技术,包括HTML、CSS和JavaScript。
控制器(Controller)。控制器层将所有事项连接在一起,并且将视图设计和模型功能合并在一起。它负责从视图中收集输入数据,并决定程序的执行逻辑。控制器会调用模型的机制并解析返回的数据,以便使这些数据能够被视图所展示。它还负责所有应用程序的异常控制和流控制。
为什么使用MVC
项目选择MVC开发应用程序的首要原因是它提倡的开发工作流。在开发团队中,MVC提供了有效的合作模式,它将各人的职责分成为三个主要的角色。
开发。开发人员是指处理模型的程序员。他们通常拥有与PHP、数据库管理、算法、架构和数据校验等方面相关的技能。这一个角色通常会负责实现应用程序的编程细节(操作)。它们会提供API,同时实施处理数据的策略。
设计。设计人员处理视图并负责实现应用程序的外观。他们具有如HTML、CSS、JavaScript和图形设计等方面的技能。通常,这一角色负责与内外部的通信源交互以决定要开发或者增强的应用程序的实现的业务规则。设计通常会导致原型的开发,也就是创建能够显示理想功能的模型设计。
集成。集成工作在于控制器层中,它将设计师和开发人员的工作连接在一起。集成人员的经验通常比开发人员要少,他们会负责切割静态模板并且制作应用程序所需的动态区域。他们还负责代理来自请求源的数据。将从表单中获取请求信息,将这些信息传递给模型,解释结果,并且将结果传递给视图。
通过职责分工,开发方法的细节与开发需求的细节分开了,这使得创意学科和技术学科能够更加容易地交互。
典型的工作流
在一个典型的工作流中,首先设计师会根据现存的业务需求以及应用程序所要实现的功能,制作一个静态的、单独的原型设计。然后设计师将设计内容交给开发人员评审。
开发人员负责确保所有的要求实现的功能是可行的,并且符合公司的安全和隐私策略。如果开发人员没有发现任何问题,他们就会创建一个开发计划,其中包括一个API模型,然后再交给集成人员。如果原型出现了问题,项目会回到设计人员手中,这一过程就再次从头开始。
准备好设计原型和API模型之后,集成工作就开始了。集成人员将研究原型设计,并将它转换成模板语言,如普通PHP、Smarty等。这使得设计内容可以处理动态数据,并且将设计集成到完全由集成人员负责的站点URL结构中。然后编写一个控制器组件,这一组件将请求(来自于表单、URL参数、cookie等)在web服务器和他们需要操作的模型信息之间代理分发。结果产生之后,获取视图并输出,并且控制器会提供所有动态内容的值。
最后,当API模型完全实现之后,就可以将应用程序交给测试人员测试了。如果集成人员根据规范编写控制器,并且模型开发人员遵循API编写代码,那么一切都会顺利进行。(工作流是自我的理解,不代表实际情况)
还有什么好处
MVC架构除了可以在团队成员之间分配职责之外,它还提供了几个非常关键的功能。
其中一个是只要表现层的设计不破坏与控制器的约定,它就允许在任何时间修改和更新表现层的设计。这意味着可以很容易地编辑副本或者变化主题,而不用改变应用程序的操作方法或者整理大量的PHP代码。
MVC架构还提供了一个很有用的文件结构分类方法。它为模型、视图和控制器提供了单独的文件,这一特性会减少代码冲突,并且会节省原本用于合并版本控制系统中的修改时间(这句话不理解)。
摘自:PHP程序设计 模式、框架与测试