PHP FRAMEWORK


关于php的FrameWork,现在大概有10多种,大体分为基于Java Struct移植的结构(Mvc结构) ,基于Ruby on Rails 移植的结构(Mvc结构),这2种的数量相对多一些,可以归类,其他有特色的还有基于事件驱动的结构.

大体看过的3个框架:

1.Studs,基于Struct移植的PHP框架.网上如此描述它:

Jakarta Struts结构移植过来的PHP开发框架,使用面向对象的开发结构和API,模拟了一个HTTP Servlet容器和使用了PHP服务页面引擎技术

大体流程是:

1.用户先将HTTP的请求(post,get)提交个控制器(Controller,在Java中一般使用Servlet),控制器根据本地配置XML,将请求发送给不同的业务逻辑,经过处理后,转向到一个指定的View,这个View的样式由模版生成,显示结果.

模板使用tag标签(一种已经定义好的动作标签与Jsp的jstl类似)

2.开发大体过程:

WEB-INF下都是Studs自带的类库和配置XML.

web.xml 映射XML,似乎不需要更改,默认就可以.

struts-config.xml 这里似乎是你所有的FORWARD地址和要处理的逻辑文件地址都放这里.

PSP 模版文件,里面除了HTML外还可以放标准的tag,这些tag都有自己的含义.包括循环,输出,引用等.

开发人员所要做的就是将HTML放到PSP里,并将一些如循环,echo等脚本用tag替换,设置struts-config.xml ,根据业务的需要设置负责请求的Action,建立继承自类库的PHP处理业务,如继承Action负责转向,继承ActionForm,处理表单.

优点:该有的都有了,看类里包括了Session,Sql,Io等各种包,应该把平时需要都纳入到框架里了,使用起来应该比较省事,不需要考虑安全,结构等问题,需要做的就是把自己的业务逻辑与流程结合就可以了,只要按照规范做就肯定不会太糟糕.真正使用它开发的话似乎会比一般单纯的开发要更安全,规范,思路也会很清晰,即使开发和维护不是同人也可以很快熟悉过程.特别是有了tag,即使设计怎样变换模版,只要业务逻辑不变,你就不需要修改PHP代码,你只要修改PSP,更改显示的方式.

缺点:开发前的学习过程不容易,首先需要了解它的运做方式,tag的各种功能,即使熟悉后,开发效率也不会很高,如果仅仅是比较开发效率的话,似乎不一定比页面+代码,不复用的开发模式快多少.特别是完全模仿JAVA框架,感觉是否会比JAVA的框架性能要减少不少,毕竟JAVA只编译一次,而PHP需要每次都编译,效率上会有折扣吧?

他的优势就是给你拐杖让你不需要考虑太多,缺点就是这个拐杖要常用才好用,真正想跑起来就没用了.

2.CakePhp:一个基于Ruby On Rails的框架,据说是2005年最受关注的PHP框架.

Ruby On Rails介绍:

Ruby On Rails是一个用于编写网络应用程序的软件包.它基于一种计算机软件语言Ruby,给程序开发人员提供了强大的框架支持.你可以用比以前少的多的代码和短的多的时间编写出一流的网络软件.比较着名的社区网站43things.com, odeo.com和basecamphq.com就是用Ruby On Rails编写的.

Ruby On Rails的指导原则是"不要重复你自己"(Don't Repeat Yourself, 或DRY).意思是说你写的代码不会有重复的地方.比如以往数据库的接口往往是类似的程序代码但是在很多地方都要重复用到.这无论是给编写还是维护都造成了很大的代价.相反,Ruby On Rails给你提供了绝大多数的支持,让你只需要短短的几行代码就可以实现强大的功能

    Rails 是一个用 Ruby 编写的全栈的(full-stack)、开源的 Web 框架,可以使用它来轻松编写实际的应用程序,所需的代码也要比大多数框架花在处理 XML 上的代码少。

      虽然我不能保证框架确实会提供它所承诺的轻松快乐,但是上面这句话确实很好地总结了 Rails 的品质。全栈包括:Web 服务器、处理 HTTP 请求和响应的框架,以及方便地把数据持久存储到关系数据库的框架。Rails 通过消除复杂的 XML 配置文件,使用 Ruby 语言的动态性质,帮助把静态类型语言中常见的许多重复代码减少到最少,努力使开发工作变得更容易

这个Ruby语言为基础的框架现在火的一踏糊涂,不仅在Ruby被使用,在Java,DotNet都是类似的遗址框架.

他的结构和J2ee的相比,比传统的Mvc模型少了几步:

(点这里看,更详细的比较)

CakePhp现在属于开发阶段,版本都是Beta版,没有详细的文档,只有一些类的描述,资源也不多,而且可能是由于他是PHP4的实现,在我的PHP5上支持不好...基本上无法使用..还没找到问题.优缺点更无从说起.

但是据网上的反映,对这个框架的期待都很高,而且都说开发效率非常高.只是似乎实现方式有些另类,需要习惯.

3.Prado:基于事件驱动的框架,ZEND获奖作品,国人写的.这个框架非常的前卫....而且对PHP 4,5支持都很好.

下面是他的网站上的一个代码图,非常反映他的工作原理.

 

Prado是受到VB的启发模拟的一套PHP事件驱动框架,他的工作原理就和VB的组件使用一样,有很多控件,如表单控件,这些控件会帮你完成一些功能.特别是提交表单,检查EMAIL这些操作,完全可以直接通过Prado接解决了.

大概的流程:

设置系统application.spec,这是一个XML结构的文档,他里面包括了系统的一些基本信息,如设置要加载的类库,默认的PHP,是否打开Session.

tpl是模板文件

默认的Php文件一般都会继承自TPage这个Class.

工作流程一般是用户访问时会先访问index.php等缺省文件,他会提供一个初始化过程,读取spec的配置信息,转向到需要的tpl或php响应操作.

优点:比起Studs来说,方便很多,开发效率应该要高,特别是基于事件的驱动,可以提供给用户更丰富的互动效果.

缺点:把VB的操作用Php实现,VB的很多后端自动生成的代码,在PHP下要自己输入...很多操作要重新学习,都是不同的控件.必须熟练以后开发效率才会提高.

Cgiapp,据说这个框架也很不错,非常轻型,可以结合Smarty和peardb来使用,但没怎么看.

大体看了这3种框架,除了Cake不清楚外,其他两种框架都需要一定时间的熟悉和练习才可以熟练掌握,操作也有些复杂, 开发效率也不会有多大提高,但是在规范代码,复用组件,安全,健壮,稳定,以后的维护时有很大帮助.

如果不打算花时间学习框架,到是可以根据平时的经验做个简单的编码规范,做几个经常需要用到的类,结合Smarty和peardb/pdo/ado这样数据库工具,似乎也不错,可能更适合公司用.

我用的一个简单的流程如图:

 

用户先将请求给Action,这个Action,会根据用户的需要调用不同的逻辑类,然后在根据处理的情况,返回结果.

如post执行update insert会在Action调用对应的Class进行操作,然后转向到成功画面View.

如果是get执行select,则会根据需要直接转向到对应独立的View试图,View在调用Class得到需要的数据显示.

在View部分可以加Smarty.

这样的虽然每次操作都要经过Action,即使直接的URL请求也可能需要通过Action转向,但可以保证流程很清晰,在修改的时候我只要按照Action就可以知道我需要修改哪里,逻辑可以在不同视图和Action被复用.

也可以借鉴下WORDPRESS等开源程序的结构,特别是WORDPRESS有个组件安装功能,被很多人称道.

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3