php高级开发之MVC框架浅谈.doc

上传人:h**** 文档编号:103626 上传时间:2018-07-06 格式:DOC 页数:15 大小:261.50KB
下载 相关 举报
php高级开发之MVC框架浅谈.doc_第1页
第1页 / 共15页
php高级开发之MVC框架浅谈.doc_第2页
第2页 / 共15页
php高级开发之MVC框架浅谈.doc_第3页
第3页 / 共15页
php高级开发之MVC框架浅谈.doc_第4页
第4页 / 共15页
php高级开发之MVC框架浅谈.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、php 高级开发之 MVC 框架浅谈 .doc php.MVC 系列教程之控制器 php.MVC 系统教程之配置文件 php.MVC 系列教程之对象关系 php.MVC 系列教程之目录文件 php.MVC 系列教程之处理流程 php.MVC 系列教程之框架介绍 php.MVC 系列教程之安装配置 php.MVC 系列教程之前言 一,前言: ASP, JSP, PHP 是 WEB 开发的三大技术,三种技术优缺点也早就有人分析过了。无非也就是 ASP 简单易用且有 microsoft 做靠山, JSP 功能强大是因为有 java 支持, PHP 则开源跨平台。在国内, ASP 应用范围最广, JS

2、P 发展势头最猛, PHP 则处于劣势。这可能与公司的支持以及技术的培训有关。 由于公司项目的需要,我这才接触 PHP,用过一段时间后两点体会最深刻,一是学习容易,上手极快,内置函数很多,适合快速开发;二是学习资料匮乏,普及不广,很多时候都要去看英文文档。 对于中小型 WEB 应用来说, PHP 有很强的竞争力,LINUX+APACHE+MYSQL+PHP(LAMP)的组合几乎可以胜任绝大多数网站的解决方案,对于大型应用来讲,对于系统架构要求 更高,需要有成熟的框架支持, JSP 的 struts 是个不错的框架,国内介绍它的资料也非常多,应用逐渐广泛起来,对应的 PHP 也有 php.MVC

3、,但是我搜遍了网络也没有发现一篇中文文档,这才让我动了翻译用户指南念头,也算是抛砖引玉,希望 PHP 能够在国内蓬勃发展起来。 php.MVC是 PHP Web应用程序的一个开源框架,它实现了模型视图控制器( MVC)设计模式 Web 应用程序的工业标准,鼓励基于 Model2 架构的应用程序设计。这种开发模式允许网页或其他显示内容从内部应用程序代码中分离出来,让设 计者和程序员更容易地集中于他们各自的专业领域。这个框架提供了一个单独入口点的控制器。这个控制器接受HTTP 请求,并根据配置文件分配给相应的动作处理。 模型包含了应用程序的业务逻辑,控制器负责处理请求,并转向到相应的显示组件 将

4、HTML 和 PHP 标签的结合起来的模板文件。处理结果返回给客户端浏览器,或者通过另外的协议比如 SMTP。 php.MVC 是用 PHP 来实现 Jakarta Struts 框架,目前它支持 Struts 的许多特性,包括申明应用程序的配置参数通过 XML 解析器。比如在 XML 配 置文件中指定各种业务逻辑组件与对应的显示组件之间的映射。 php.MVC 的网站地址 http:/ 二, php.MVC 系列教程之安装配置 php.MVC 必须安装在 PHP v 4.1.0 及以上版本的 Web 服务器上 Windows(Apache 2.0.51+php-4.3.9-Win32) 1.

5、从 http:/www.apache.org 下载相应的 Apache 版本。 2.从 http:/ 下载相应的 PHP 版本。 3.从 http:/ 下 载相应的 php.MVC 版本。 4.建立目录 c:www 作为 Web 服务器目录, c:webapp 作为 Web 根目录 , 你也可以定义自己的目录,以下作相应的修改即可。 5.将 Apache 安装到 c:www,打开浏览器,在地址栏输入 http:/localhost 测试是否安装成功 注意:如果你的系统上已经安装有其他 Web 服务器(如 IIS 5),且占用了 80 端口,请先停止该服务器。 6.把 PHP 压缩包解压到 c:

6、www。 7.将 c:wwwphp-4.3.9-Win32 目录下 php.ini-dist 拷贝到系统目录如 c:winnt 中并更名为php.ini, 将 php4ts.dll 拷贝到系统目录如 c:winntsystem32 中,打开 c:wwwApache GroupApache2conf 目录下 http.conf 文件 , 在 ScriptAlias /cgi-bin/ “c:/www/Apache Group/Apache2/cgi-bin/“下加入 ScriptAlias /php/ “c:/www/php-4.3.9-Win32/“ AddType application/x

7、-httpd-php .php Action application/x-httpd-php “/php/php.exe“ 并将 DocumentRoot “c:wwwApache GroupApache2htdocs“改为 DocumentRoot “c:/webapp“ 8.把 php.MVC 压缩包解压到 c:webapp 9.打开 c:webappphpmvc 目录下 Main.php 文件,修改如下内容 / Set php.MVC library root directory $appServerRootDir = c:webappphpmvc; / no trailing slas

8、h / Set the application path $moduleRootDir = c:webappphpmvc; / no trailing slash / Set the OS Type Optional UNIX|WINDOWS|MAC if we have / trouble detecting the server OS type. Eg: path errors. $osType = WINDOWS; 确认 c:webappphpmvcWEB-INF 目录下 phpmvc-config.data 有可写权限。 打开浏览器,在地址栏输入 http:/localhost/php

9、mvc/Main.php?do=stdLogon 测试是否安装成功。 10.要查阅更为详细的安装文档,请看 http:/ 三、 php.MVC 系列教程之框架介绍 : 一、介绍 php.MVC 是一个开放源代码的 Web 应用框架,实现了模型 -视图 -控制器 (MVC)设计模式,鼓励基于 Model2 架构的应用程序设计。这种开发模式允许网页或其他显示内容从内部应用程序代码中分离出来,让网页设计者和程序员更容易地集中于他们各自的专业领域。 这个框架提供了一个单独入口点的控制器。这个控制器接受 HTTP 请求,并根据配置文件分配给相应的动作处理。模型则包含了应用程序的业务逻辑。当请求处理完成,

10、控制器调用相应的显示组件 通常用模板文件来实现。处理结果返回给客户端浏览器,或者通过另外的协议比如 SMTP。 php.MVC 是用 PHP 来实现 Jakarta Struts 框架,目前它支 持 Struts 的许多特性,包括通过 XML 解析器实现 XML 与对象的映射,从而设置应用程序的配置参数。比如在 XML配置文件中指定各种业务逻辑组件与对应的显示组件之间的映射。 图 1 图 1 所示的逻辑图描述了框架的高层结构。 可以看出框架包括三个主要的组件:前端控制器、主控制器和动作分配器。 二、优 /缺点 优点: 1. php.MVC 是一个开源项目能让你完全接触源代码,使开发者能更深入的

11、了解其内部实现机制。 2. 使用 php.MVC 可以促进模块化开发,促使开发者和设计者的角色分离,提高代码的重用性和可维护性。 3. php.MVC 框架的学习可以借鉴 Jakarta Struts 的一些知识和经验,如果你有开发 Struts的经验,那么就可以快速地用 php.MVC 来进行开发。 4. MVC 模式是 Java 开发 Web 应用程序的一个设计标准,使用 php.MVC 框架还有助于Web 开发者理解 MVC 设计模式。 缺点: 1. php.MVC 功能仍在不段变化和完善中,你需要随时关注最新版本。 2. 使用 php.MVC 需要进行额外的学习过程。 3. 应用 ph

12、p.MVC 可以得到清晰的程序结构,但也会增加系统复杂度。 4. 应用 php.MVC 可以让程序更加有条理,但也会降低程序执行速度。 因此你需要根据项目大小、周期、成本,开发人员素质等众多条件来决定是否应用 php.MVC框架。 四、 php.MVC 系列教程之处理流程 : php.MVC 框架由许多类组装而成,但是我们不必了解所有类的详细工作过程也可以使用这个框架,图 2 显示了我们使用该框架需要了解的一些核心组件。 图 2 从图 2 我们可以看到一个典型的 Web 浏览器的 HTTP 请求如何与我们应用程序框架的核心类进行交互,然后如何得到 HTTP 响应返回到 Web 浏览器。 现在,

13、让我们以一个实例来了解框架的处理流程。比如要查看公司销售报表,先在浏览器地址栏输入 http:/ 客户端便发送给php.MVC 应用程序一个请求。应用程序框架的控 制器处理这个请求,分析查询字符串,取出请求路径关键字。在这个实例中,路径为 salesReport。后面我们将看到如何通过 XML配置文件来配置必需的应用行为,绑定表单验证,业务逻辑处理和显示组件。 如果我们想严格控制只有通过验证的人才能访问这个报表,则用户必须先输入基本的验证信息,通常是用户名和密码。为了限制只有通过了验证的用户才能访问该报表,这里用了一个被称作 ActionForm 的类,我们需要继承框架的 ActionForm

14、 来定义自己的表单验证类 ,比如 SalesActionForm,如下所示: class SalesActionForm extends ActionForm . . 在 SalesActionForm 类里我们要检查用户是否可信任的以决定下一步动作。如果用户没有通过验证,我们将重定向到初始页面要求重新输入;如果他通过了验证,控制器会通过Action 类来调用业务处理类。 我们通过继承框架 Action 类来进行自定义,比如 SalesAction,如下所示: class SalesAction extends Action . . 在 XML 配置文件中我们要定义请求与 Action 类的对

15、应关系,这样控制器找到相应的Action 类,这里调用 SalesAction。在 SalesAction 类里我们能访问业务处理类和数据源。本例中我们从数据库中取得销售数据,制成报表格式。例如:我们创建一些对象,后面在销售报表模板中可以使用这些对象,如下所示: / Sales report items - per zone (individual object instances): $item1 = new Item(Northern Zone Sales , $salesNorth); $item2 = new Item(Southern Zone Sales , $salesSouth

16、); . 当我们完成了销售报表,就要通过控制器指定显示组件显示出来。这是通过一个在XML 配置文件中已经配置好的被称作 Forward 的对象的来完成,如下所示: return $mapping-findForwardConfig(salesReportSuccess); Forward 对象包含了销售报表模板的路径,比如 salesReport.tpl,这也是在配置文件中定义。 然后控制器将请求转向到 ActionDispatcher,由它定向到指定的显示组件,在本例中是 salesReport.tpl,在模板中通过访问先前定义对象和变量从而得到在 SalesAction 里准备好的数据。

17、下面显示我们如何用 phpTAL 模板系统访问报表数据并生成显示视图,对象 $item1 我们用类变量 $item1-value . Sales report-value will appear here . 最后将处理结果通过 HTTP 发送到客户端浏览器 ,从而也就完成了整个处理过程。 五、 php.MVC 系列教程之目录文件 现在让我们来分析一个典型的 php.MVC Web 应用程序的结构。 图 3 显示了如何布置一个 php.MVC 应用程序和其核心类库 图 3 php.MVC 类库 从上图我们可以看到 php.MVC 类库被安装在服务器的 DEV 目录下,这个目录用来放置一些通用类

18、库。为了安全起见,该目录不允许 Web 用户访问,因此最好不要将该目录建立在 Web 根目录。如果由于某种原因需要将 php.MVC 类库安装在 Web 根目录,那你必须用 .htaccess 文件来控制其访问对象。 下面显示的是 Apache 的 .htaccess 文件 # options the .htaccess files in directories can override. # Edit apache/conf/httpd.conf to AllowOverride in .htaccess # AllowOverride AuthConfig # Stop the direc

19、tory list from being shown Options -Indexes # Controls who can get stuff from this server. Order Deny,Allow Deny from all Allow from localhost 这将指示 Apache 服务器 拒绝所有人访问包含有该 .htaccess 的目录及其子目录,在本例中是 php.MVC 类库的 /WEB-INF 目录下包含的文件及子目录。 允许从服务器主机可以访问,这允许使用 Web 服务器的开发者能够浏览该类库下的测试目录以及执行单元测试。 php.MVC 文件不必做任何修

20、改即可正常使用,为了能够访问到类库文件,我们需要在Web 应用程序的 Main.php 文件中设置 php.MVC 类库根目录 ,如下 所示: $appServerRootDir = D:/Dev/PHP/phpmvc-base; / no trailing slash php.MVC Web 应用程序 从图 3 我们可以看出一个 Web 应用程序目录 SalesReport 被放置在 Web 根目录WWW 下。 在 SalesReports 下的一级目录下我们可以看到几个目录和 Main.php 文件, art 目录用来存放应用图像, style 目录用来存放样式表,这两个目录可以通过 We

21、b 访问 ,并且可以根据实际需要重新命名,我们能够 在模板文件中访问这些资源,如下所示: 接下来是 WEB-INF 目录,该目录存放应用类和资源。它不能通过 Web 访问,这是通过 .htaccess 文件来实现的。开发者可以在该目录下自由创建目录及子目录,但需要在WEB-INF 目录下的 ModulePaths.php 中声明。在 WEB-INF 目录下, class 目录用来存放应用类和资源文件, tpl 目录用来存放显示资源,比如 网页模板。 在 WEB-INF 目录下还有 .htaccess,ModulePaths.php, phpmvc-config.xml, phpmvc-conf

22、ig_1_1.dtd, phpmvc-config.data and prepend.php files。其中 .htaccess 文件已经在前面讨论过了。 ModulePaths.php 文件用来定义指定应用类及资源的路径,我们可以象下面一样定义: $appDirs = array(); $appDirs = ; / starting with the sub-application home directory $appDirs = WEB-INF; $appDirs = WEB-INF/classes; $appDirs = WEB-INF/tpl; phpmvc-config.xml

23、文件是 php.MVC 应用程序的中心组件,可以通过 XML 来定义应用程序的行为和属性,在后面将有更为详细的介绍。 phpmvc-config_1_1.dtd 文件是 phpmvc-config.xml 的文档类型定义文件, DTD 文件指定了在 phpmvc-config.xml 文件中可以包含的节点,它是应用程序行为和属性的最终参照。大部分 XML 编辑器都可以用 DTD 文件来验证 phpmvc-config.xml 文件的有效性。 phpmvc-config.data 文件包含了应用程序的一些配置数据,这些配置数据是根据phpmvc-config.xml 文件的最新信息动态生成的。假

24、如你的应用程序得不到期望结果时,可以在 phpmvc-config.xml 中增加空格键以修改它,重新运行应用程序时 配置数据就会被重新生成。 prepend.php 文件常用来包含应用文件,前面,我们已经包含了应用类和模板文件,我们可以用它来包含其他类和资源文件,如下: include_once Locale.php; include_once PropertyMessageResources.php; Main.php 就是 php.MVC 应用程序的那个单一入口点,它被放置在应用程序根目录。所有的请求都需要通过它来完成。 从上面我们可以看出, Main.php 文件中必须定义 php.M

25、VC 类库的路径 $appServerRootDir = D:/Dev/PHP/phpmvc-base; / no trailing slash 接下来我们将指定应用程序路径 $moduleRootDir = C:/WWW/SalesReports; / no trailing slash 我们也可以设置应用程序的 ActionDispatcher 路径。每个 php.MVC 应用程序通常都要自定义一个 ActionDispatcher 来处理指定的请求,我们需要定义 ActionDispatcher 变量,如下所示: $actionDispatcher = ReportActionDispa

26、tcher; $osType 变量用于指定 php.MVC 所在主机的操作系统类型,通常框架能够自动检测出来并以此来设置应用路径,但是如果你的应用程序运行出现路径错误, 请手工设置该变量。如下所示: $osType = UNIX; 正常情况下,包含在 Main.php 中的其它参数可以不做修改。 六、 php.MVC 系列教程之对象关系 图 4 显示了从开发者的角度来看 php.MVC 示例程序中主要类和资源,以及它们之间的关系。 图 4 在上图左上角是 ActionForm类,我们通过继承它来处理 HTML 表单验证和与之相关的功能。示例中通过继承 ActionForm 定义了一个基类 Ab

27、stractBaseForm,它包含一些通用的逻辑,可以为更多的应用程序 ActionForm 类所引用 ,比如 SalesReportForm 类就具体实现了AbstractBaseForm 类。 在上图上方是 Action 类,通常用来处理通过 ActionForm 类完成了初始化验证的请求。我们再次看到了继承 Action 定义的基类 AbstractBaseAction, SalesReportAction 类继承AbstractBaseAction 用来处理请求,在 SalesReportAction 类中我们能调用业务逻辑类ReportBusinessClass,访问数据库和其他资

28、源。 在上图下方是 ActionDispatcher 类,负责为 Action 请求准备显示资源如网页模板。通常,我们需要继承框架 ActionDispatcher 类来定 义自己的 Dispatcher,比如示例中的ReportActionDispatcher。 在后面我们将有更为详细的介绍 七、 php.MVC 系统教程之配置文件 前面我们讲解了 php.MVC 的结构以及流程,接下来,我们将重点介绍以下的核心组件: XML 配置文件是 php.MVC 应用程序的 “配电盘 ”,为 HTTP 请求绑定组件。 Controller 由一些框架类组成,负责为 HTTP 请求找到正确的 Form

29、 和 Action 类以及显示资源,在 phpmvc-config.xml 文件中定义。 ActionForm 类通常用来处理 Web 表单验证。 Action 类可以访问业务处理类,能让我们把精力放在应用程序业务流上。 ActionDispatcher 类操纵显示资源的处理。 XML 应用程序配置系统 phpmvc-config.xml 文件是 php.MVC 应用程序主要的配置组件,每个 php.MVC 应用程序都有自己的 phpmvc-config.xml 文件,通常位于 WEB-INF 目录下。一旦这个文件被修改, Controller 就会调用 XML 解析器解析该文件,将 XML

30、节点转化为配置对象,这些配置对象缓 存在 phpmvc-config.data 文件中,通常它也是放在与 phpmvc-config.xml 相同的目录。在后面的请求中, Controller 将会调入缓存的 phpmvc-config.data 文件,保存处理时间。 图 5 显示了一个典型的 phpmvc-config.xml 文件的节点和属性。 在图 5 我们看到了配置文件与应用程序组件是如何联系起来的,我们为 action 节点定义了一个 path 属性为 salesReport,这个标识就是 Action 的访问路径如:http:/ 在 action 节点中 name 属性为 sale

31、sReportForm,这就告诉 Controller 我们要用一个名为 salesReportForm 的 form-bean 来处理表单验证,我们能看到名为 salesReportForm的 form-bean在 action-mappings节点上面的 form-bean内定义了,其中 validate属性为 true表示控制器会调用 form-bean 的 validate(.)方法。 在 action 节点和与其联系的 form-bean 节点中,都有 type 属性。我们用这个属性定义 form-bean 和 action 各自对应的类。比如 action 节点就定义了 Action 类为SalesReportAction,form-bean 节点的 ActionForm 类为 SalesReportForm。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。