Zend Framework是基于PHP5的一个开源,面向对象的Web应用框架。当前最新的的版本是Zend Framework 1.7,其中MVC组件已经相当成熟。
到 底什么是MVC?MVC是Model-View-Controller的缩写,即模型-视图-控制器。它是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件架构模式。通过MVC模式,强制性把程序分为模型-视图-控制器。如下图:
模型 模型(Model)主要包括数据存储和业务逻辑。通过创建特定的对象来完成对数据库的访问操作;制定相应的规则来操作我们的业务数据。而且,通过模型所返回的数据是独立的,所以,一个模型能为多个视图提供数据,这样减少了代码的重复性。 视图 视 图(View)是展现给最终用户所看到的东西,通常是指HTML页面,但也可能是别的东西,比如:基于XML语义的RSS、WML、甚至是 JavaScript或者是PDF文档。视图只是展现模型的一种方式,提供给用户什么样的格式,完全取决于视图,而不是模型。正是这种框架模式可以给数据 提供丰富的显示方式,而无需对模型进行修改。 控制器控制器(Controller)接收用户的请求并调用模型的业务逻辑和 视图去响应用户的请求。通常情况下,所有的请求通过前端控制器来分配,然后由控制本身来确定调用哪一个模型的业务逻辑和使用哪一个视图,响应给用户。对于 Web应用来说,访问不同的URL就是请求控制器。
在 Zend_Db中,提供了一些有用的对象来方便你创建自己的模型,这里主要说明Zend_Db_Adapter和Zend_Db_Table。 Zend_Db_Adapter 抽象化了不同数据库的访问接口,统一了访问方法。现在支持的数据库包括:PDO接口的IBM DB2 and Informix Dynamic Server、MySQL、Microsoft SQL Server、Oracle、PostgreSQL、SQLite和其它数据库的扩展接口:MySQL(使用mysqli)、Oracle(使用 oci8)、IBM DB2(使用ibm_db2)、Firebird/Interbase(使用php_interbase)。 Zend_Db_Table实现了企业应用架构模式中的表数据入口模式。
Zend_Db_Table 类是一个面向对象的数据库表接口,它提供一些公共的表操作方法。Zend_Db_Table非常容易扩展,你可以在 Zend_Db_Table的之类中添加自己的业务逻辑。关于表数据入口的详细信息不是本文的重点,如有兴趣可参考《企业应用架构模式》一书中第十章,第 一节的描述。 虽然在Zend_Db中还提供了一些有用的对象,自己可以根据自己的实际实况来使用。
Zend_Layout是一个两步视图模式的 实现。两步视图模式把整个页面分成两部分来处 理,全局的外观和局部信息。因为在站点中,一般所有的页面都会使用同样的风格,而这就是全局的外观,每个页面之间的差异则是局部信息。通过使用两步视图模 式,我们能够方便的为站点定义全局的外观,这包括:页面的外观和栏目的放置。 Zend_View是MVC中的视图部分,Zend_View接收来自控制器中的数据,并完成模版渲染,最终响应给用户。 Zend_View默认使用PHP自身来创建模板,当然你也可以使用其它的模板引擎。
Zend_Controller包括几个重要的部分,前端控制器、请求对象、响应对象和插件机制。
Zend_Controller_Front、 Zend_Controller_Dispatcher、Zend_Controller_Router和Zend_Controller_Action 组成了前端控制器所需要的组件,每一个控制器都必须是Zend_Controller_Action的子类。
Zend_Controller_Request和Zend_Controller_Response组成了请求和响应对象,请求对象还包含了访问控制器 的相关信息,响应对象用于将通过视图产生的结果响应给用户。
Zend_Controller_Plugin提供了在访问整个控制器的过程中,能够容易扩展 和控制整个过程的方法。
在Zend_Controller_Action中还有一些助手帮助你完成重复的任务,使用得最多的是 Zend_Controller_Action_Helper_ViewRenderer插手,这个助手能够自己寻找模版文件,不用去显式的指定。
关于Zend_Controller更详细的说明请查看该系列文章的第二部分。
在Zend Framework中,大部分的组件之间都是相互独立的,也就是说,你可以不使用Zend_Db来创建你的模型,也可以单独在程序中使用 Zend_Layout。当然,Zend Framework的其它组件也可以这样使用。不过,还是有部分功能是相互依赖的。比如:Zend_Auth和Zend_Session。
以上几个组件是Zend Framework MVC中的组成部分。通过这些部分,帮助你使用MVC模型来进行程序开发。在该系列后面的文章中,会详细的介绍各个组件的使用方法,尽请关注。
访问Zend Framework官方站点查看更多资源