php高级开发之MVC框架浅谈_第1页
php高级开发之MVC框架浅谈_第2页
php高级开发之MVC框架浅谈_第3页
php高级开发之MVC框架浅谈_第4页
php高级开发之MVC框架浅谈_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

php 高级开发之 MVC 框架浅谈 .docphp.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 应用范围最广,JSP 发展势头最猛,PHP 则处于劣势。这可能与公司的支持以及技术的培训有关。由于公司项目的需要,我这才接触 PHP,用过一段时间后两点体会最深刻,一是学习容易,上手极快,内置函数很多,适合快速开发;二是学习资料匮乏,普及不广,很多时候都要去看英文文档。对于中小型 WEB 应用来说,PHP 有很强的竞争力,LINUX+APACHE+MYSQL+PHP(LAMP)的组合几乎可以胜任绝大多数网站的解决方案,对于大型应用来讲,对于系统架构要求更高,需要有成熟的框架支持,JSP 的 struts 是个不错的框架,国内介绍它的资料也非常多,应用逐渐广泛起来,对应的 PHP 也有php.MVC,但是我搜遍了网络也没有发现一篇中文文档,这才让我动了翻译用户指南念头,也算是抛砖引玉,希望 PHP 能够在国内蓬勃发展起来。 php.MVC 是 PHP Web 应用程序的一个开源框架,它实现了模型视图控制器(MVC)设计模式Web 应用程序的工业标准,鼓励基于 Model2 架构的应用程序设计。这种开发模式允许网页或其他显示内容从内部应用程序代码中分离出来,让设计者和程序员更容易地集中于他们各自的专业领域。这个框架提供了一个单独入口点的控制器。这个控制器接受 HTTP 请求,并根据配置文件分配给相应的动作处理。模型包含了应用程序的业务逻辑,控制器负责处理请求,并转向到相应的显示组件将 HTML 和 PHP 标签的结合起来的模板文件。处理结果返回给客户端浏览器,或者通过另外的协议比如 SMTP。php.MVC 是用 PHP 来实现 Jakarta Struts 框架,目前它支持 Struts 的许多特性,包括申明应用程序的配置参数通过 XML 解析器。比如在 XML 配置文件中指定各种业务逻辑组件与对应的显示组件之间的映射。php.MVC 的网站地址 二,php.MVC 系列教程之安装配置php.MVC 必须安装在 PHP v 4.1.0 及以上版本的 Web 服务器上Windows(Apache 2.0.51+php-4.3.9-Win32)1.从 下载相应的 Apache 版本。2.从 下载相应的 PHP 版本。3.从 下载相应的 php.MVC 版本。4.建立目录 c:www 作为 Web 服务器目录,c:webapp 作为 Web 根目录,你也可以定义自己的目录,以下作相应的修改即可。5.将 Apache 安装到 c:www,打开浏览器,在地址栏输入 http:/localhost 测试是否安装成功注意:如果你的系统上已经安装有其他 Web 服务器(如 IIS 5),且占用了 80 端口,请先停止该服务器。6.把 PHP 压缩包解压到 c: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-httpd-php .phpAction application/x-httpd-php “/php/php.exe“并将 DocumentRoot “c:wwwApache GroupApache2htdocs“改为 DocumentRoot “c:/webapp“8.把 php.MVC 压缩包解压到 c:webapp9.打开 c:webappphpmvc 目录下 Main.php 文件,修改如下内容/ Set php.MVC library root directory$appServerRootDir = c:webappphpmvc; / no trailing slash/ 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/phpmvc/Main.php?do=stdLogon 测试是否安装成功。10.要查阅更为详细的安装文档,请看/docs/installIdx.php?doc=all。三、php.MVC 系列教程之框架介绍:一、介绍php.MVC 是一个开放源代码的 Web 应用框架,实现了模型- 视图-控制器(MVC) 设计模式,鼓励基于 Model2 架构的应用程序设计。这种开发模式允许网页或其他显示内容从内部应用程序代码中分离出来,让网页设计者和程序员更容易地集中于他们各自的专业领域。这个框架提供了一个单独入口点的控制器。这个控制器接受 HTTP 请求,并根据配置文件分配给相应的动作处理。模型则包含了应用程序的业务逻辑。当请求处理完成,控制器调用相应的显示组件通常用模板文件来实现。处理结果返回给客户端浏览器,或者通过另外的协议比如 SMTP。php.MVC 是用 PHP 来实现 Jakarta Struts 框架,目前它支持 Struts 的许多特性,包括通过 XML 解析器实现 XML 与对象的映射,从而设置应用程序的配置参数。比如在 XML配置文件中指定各种业务逻辑组件与对应的显示组件之间的映射。图 1图 1 所示的逻辑图描述了框架的高层结构。可以看出框架包括三个主要的组件:前端控制器、主控制器和动作分配器。二、优/缺点优点:1. php.MVC 是一个开源项目能让你完全接触源代码,使开发者能更深入的了解其内部实现机制。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. 应用 php.MVC 可以得到清晰的程序结构,但也会增加系统复杂度。4. 应用 php.MVC 可以让程序更加有条理,但也会降低程序执行速度。因此你需要根据项目大小、周期、成本,开发人员素质等众多条件来决定是否应用php.MVC 框架。四、php.MVC 系列教程之处理流程:php.MVC 框架由许多类组装而成,但是我们不必了解所有类的详细工作过程也可以使用这个框架,图 2 显示了我们使用该框架需要了解的一些核心组件。图 2从图 2 我们可以看到一个典型的 Web 浏览器的 HTTP 请求如何与我们应用程序框架的核心类进行交互,然后如何得到 HTTP 响应返回到 Web 浏览器。现在,让我们以一个实例来了解框架的处理流程。比如要查看公司销售报表,先在浏览器地址栏输入/mycompany/Main.php?do=salesReport 客户端便发送给php.MVC 应用程序一个请求。应用程序框架的控制器处理这个请求,分析查询字符串,取出请求路径关键字。在这个实例中,路径为 salesReport。后面我们将看到如何通过 XML配置文件来配置必需的应用行为,绑定表单验证,业务逻辑处理和显示组件。如果我们想严格控制只有通过验证的人才能访问这个报表,则用户必须先输入基本的验证信息,通常是用户名和密码。为了限制只有通过了验证的用户才能访问该报表,这里用了一个被称作 ActionForm 的类,我们需要继承框架的 ActionForm 来定义自己的表单验证类,比如 SalesActionForm,如下所示:class SalesActionForm extends ActionForm . .在 SalesActionForm 类里我们要检查用户是否可信任的以决定下一步动作。如果用户没有通过验证,我们将重定向到初始页面要求重新输入;如果他通过了验证,控制器会通过 Action 类来调用业务处理类。我们通过继承框架 Action 类来进行自定义,比如 SalesAction,如下所示:class SalesAction extends Action . .在 XML 配置文件中我们要定义请求与 Action 类的对应关系,这样控制器找到相应的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);.当我们完成了销售报表,就要通过控制器指定显示组件显示出来。这是通过一个在XML 配置文件中已经配置好的被称作 Forward 的对象的来完成,如下所示:return $mapping-findForwardConfig(salesReportSuccess);Forward 对象包含了销售报表模板的路径,比如 salesReport.tpl,这也是在配置文件中定义。然后控制器将请求转向到 ActionDispatcher,由它定向到指定的显示组件,在本例中是 salesReport.tpl,在模板中通过访问先前定义对象和变量从而得到在 SalesAction 里准备好的数据。下面显示我们如何用 phpTAL 模板系统访问报表数据并生成显示视图,对象$item1我们用类变量$item1-value.Sales report-value will appear here.最后将处理结果通过 HTTP 发送到客户端浏览器,从而也就完成了整个处理过程。五、php.MVC 系列教程之目录文件现在让我们来分析一个典型的 php.MVC Web 应用程序的结构。图 3 显示了如何布置一个 php.MVC 应用程序和其核心类库图 3php.MVC 类库从上图我们可以看到 php.MVC 类库被安装在服务器的 DEV 目录下,这个目录用来放置一些通用类库。为了安全起见,该目录不允许 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 directory list from being shownOptions -Indexes# Controls who can get stuff from this server.Order Deny,AllowDeny from allAllow from localhost这将指示 Apache 服务器拒绝所有人访问包含有该.htaccess 的目录及其子目录,在本例中是 php.MVC类库的/WEB-INF 目录下包含的文件及子目录。允许从服务器主机可以访问,这允许使用 Web 服务器的开发者能够浏览该类库下的测试目录以及执行单元测试。php.MVC 文件不必做任何修改即可正常使用,为了能够访问到类库文件,我们需要在 Web 应用程序的 Main.php 文件中设置 php.MVC 类库根目录 ,如下所示:$appServerRootDir = D:/Dev/PHP/phpmvc-base; / no trailing slashphp.MVC Web 应用程序从图 3 我们可以看出一个 Web 应用程序目录 SalesReport 被放置在 Web 根目录WWW 下。在 SalesReports 下的一级目录下我们可以看到几个目录和 Main.php 文件,art 目录用来存放应用图像,style 目录用来存放样式表,这两个目录可以通过 Web 访问,并且可以根据实际需要重新命名,我们能够在模板文件中访问这些资源,如下所示:接下来是 WEB-INF 目录,该目录存放应用类和资源。它不能通过 Web 访问,这是通过.htaccess 文件来实现的。开发者可以在该目录下自由创建目录及子目录,但需要在WEB-INF 目录下的 ModulePaths.php 中声明。在 WEB-INF 目录下,class 目录用来存放应用类和资源文件,tpl 目录用来存放显示资源,比如网页模板。在 WEB-INF 目录下还有 .htaccess,ModulePaths.php, phpmvc-config.xml, phpmvc-config_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 文件是 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 文件的最新信息动态生成的。假如你的应用程序得不到期望结果时,可以在 phpmvc-config.xml 中增加空格键以修改它,重新运行应用程序时配置数据就会被重新生成。prepend.php 文件常用来包含应用文件,前面,我们已经包含了应用类和模板文件,我们可以用它来包含其他类和资源文件,如下:include_once Locale.php;include_once PropertyMessageResources.php; Main.php 就是 php.MVC 应用程序的那个单一入口点,它被放置在应用程序根目录。所有的请求都需要通过它来完成。从上面我们可以看出,Main.php 文件中必须定义 php.MVC 类库的路径$appServerRootDir = D:/Dev/PHP/phpmvc-base; / no trailing slash接下来我们将指定应用程序路径$moduleRootDir = C:/WWW/SalesReports; / no trailing slash我们也可以设置应用程序的 ActionDispatcher 路径。每个 php.MVC 应用程序通常都要自定义一个ActionDispatcher 来处理指定的请求,我们需要定义 ActionDispatcher 变量,如下所示:$actionDispatcher = ReportActionDispatcher;$osType 变量用于指定 php.MVC 所在主机的操作系统类型,通常框架能够自动检测出来并以此来设置应用路径,但是如果你的应用程序运行出现路径错误,请手工设置该变量。如下所示:$osType = UNIX;正常情况下,包含在 Main.php 中的其它参数可以不做修改。六、php.MVC 系列教程之对象关系图 4 显示了从开发者的角度来看 php.MVC 示例程序中主要类和资源,以及它们之间的关系。图 4在上图左上角是 ActionForm 类,我们通过继承它来处理 HTML 表单验证和与之相关的功能。示例中通过继承 ActionForm 定义了一个基类 AbstractBaseForm,它包含一些通用的逻辑,可以为更多的应用程序 ActionForm 类所引用, 比如 SalesReportForm 类就具体实现了 AbstractBaseForm 类。在上图上方是 Action 类,通常用来处理通过 ActionForm 类完成了初始化验证的请求。我们再次看到了继承 Action 定义的基类 AbstractBaseAction,SalesReportAction 类继承AbstractBaseAction 用来处理请求,在 SalesReportAction 类中我们能调用业务逻辑类ReportBusinessClass,访问数据库和其他资源。在上图下方是 ActionDispatcher 类,负责为 Action 请求准备显示资源如网页模板。通常,我们需要继承框架 ActionDispatcher 类来定义自己的 Dispatcher,比如示例中的ReportActionDispatcher。在后面我们将有更为详细的介绍七、php.MVC 系统教程之配置文件 前面我们讲解了 php.MVC 的结构以及流程,接下来,我们将重点介绍以下的核心组件: XML 配置文件是 php

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论