admin 管理员组

文章数量: 1184232


2024年4月29日发(作者:html路径怎么设置)

2012年10月 

重庆文理学院学报(自然科学版) 

Journal of Chongqing University of Arts and Sciences(Natural Science Edition) 

0ct..2012 

第31卷第5期 

V01.31 No.5 

基于ThinkPHP与ZendAMF框架的Flex开发 

刘 镭 ,林文如 

(1.福建师范大学信息技术学院,福建福州350007;2.闽江学院计算机科学系,福建福州 350108) 

[摘要]在简要介绍ThinkPHP、ZendAMF和Flex的基础上,提出一种将3个框架整合的开发 

方法,并通过一个实例的实现阐述该方法的应用过程,最后从开发效率、请求响应时间两方面, 

对比分析使用本文方法和使用传统方法得到的结果.对比分析结果表明,本文方法形成了一套 

整合后的敏捷式开发框架,为企业级应用开发提供了一种技术解决方案. 

[关键词]ThinkPHP;ZendAMF;Flex;MVC 

[中图分类号]TP3ll [文献标志码]A[文章编号]1673—8012(2012)05—0057—05 

从MVC的角度看,Flex只是一个客户端表 跨浏览器、桌面和操作系统,实现一致的部署 

现层(即View),要真正地实现数据处理,就必须 

与服务端程序进行交互¨ .在Flex中运用Zen— 

2开发框架整合 

dAMF框架进行通信的应用研究较少 .本文将 如上所述,ThinkPHP、ZendAMF、Flex三者之 

研究和探讨在ThinkPHP中整合ZendAMF框架 

间具有各自的优势,那么如何整合3个框架,为 

的方法和实例,为基于Flex的富客户端应用提 

企业级应用提供一种敏捷的开发方案,是一个急 

供数据交互的能力. 需解决的技术问题. 

1开发框架简介 

2.1整合思路及方法 

ThinkPHP是一个服务端开发框架,封装了 

ThinkPHP是一个免费开源的、快速简单的、 

CURD和一些常用操作,在查询语言、自动验证、 

面向对象的轻量级PHP开发框架,遵循Apache2 

视图模型等方面均有独特的表现,即在设计控制 

开源协议发布,是为了敏捷Web应用开发和简 器(Controller)与模型(Mode1)方面具有很强的处 

化企业应用开发而诞生的,并且集成了许多第三 理能力,但富客户端界面视图(View)方面的表现 

方类库 . 

则不尽如人意. 

AMF协议是Adobe公司的Action Message 

ZendAMF也是一个服务端开发框架,本身 

Format协议的简称 4 J,主要用于数据交互和远程 

并没有处理客户端界面视图方面的能力,但它内 

过程调用,在功能上与WebService相当,但AMF 

置了Flash对象,可以将服务端的Object、Array、 

与WebService中的XML不同,AMF是二进制数 Date、XML等数据传回服务器端,在服务器端自 

据,而XML是文本数据,AMF的传输效率比 动解析成适当的对象,这就减轻了开发人员繁复 

XML高 .本文所整合的是基于AMF协议的 

的工作负担,同时也节省了开发时间. 

ZendAMF,该框架在执行效率、稳定性各方面均 

Flex是一个富客户端开发框架,先天就缺少 

有较大优势. 

服务端控制器、模型方面的能力,但在界面视图 

Flex是一个高效、免费的开源框架,可用于 方面却有独具一面的优势. 

构建具有表现力的Web应用程序.这些应用程 整合3个框架的思路是:将3个框架各自的 

序利用Adobe Flash Player和Adobe AIR,运行时 优点抽取出来,分别扮演M(模型)、V(视图)、C 

[收稿日期]2012—08—11 

[基金项目]计算机应用技术重点学科建设项目(闽高教【2007】4号). 

[作者简介]刘镭(1981一),女,辽宁鞍山人,助教,硕士,主要从事软件开发技术方面的研究 

57 

(控制器)的角色,即ThinkPHP扮演控制器及模 

型的角色,ZendAMF扮演控制器网关的角色, 

Flex扮演视图的角色. 

2.2整合后的开发框架 

根据以上分析的结果,整合后的开发框架如 

图1所示. 

图1框架整合图 

如图1所示,整合后的框架使用Flex来代替 

ThinkPHP的视图(View)部分,Flex负责前端的 

用户交互,ThinkPHP负责服务端的业务逻辑 

(Controller)和数据处理(Mode1),ZendAMF的 

AMF网关负责架起Flex与ThinkPHP之间通信 

的桥梁,通信的方式为Remote Object.用Remote 

Object格式来传递数据,适用于大数据量通信的 

PRC服务. 

框架的操作流程为:Flex客户端通过Zen— 

dAMF网关向ThinkPHP控制器发送请求,Think- 

PHP控制器根据接收到的请求命令向ThinkPHP 

模型发送数据处理指令,ThinkPHP模型通过 

ThinkPHP内置的数据库接口向数据库请求数 

据,数据库返回的数据通过上述路线原路返回给 

Flex客户端界面. 

3 应用实例 

3.1实例概述 . 

为了简明扼要地介绍3种框架整合技术的 

实现,又不失一般性,本实例将实现一个简单 

的留言板功能模块,包括写留言、查看留言 

58 

2项操作. 

3.2开发环境 

在Windows平台下,使用如下开发环境: 

Apache 2.2.17+PHP5.3.3+MySQL5.5.8+Thi— 

nkPHP2.1+ZendAMF 1.1.1+ZendStudio 9.0.1 

+Adobe Flash Builder 4.5. 

3.3 实例实现 

数据库设计:在MySQL数据库中新建一个 

表guestbook,包括3个字段:id、title、content. 

在ZendStudio中新建一个本地PHP项目 

guestbook,系统自动在web服务器的根目录下建 

立一个guestbook文件夹及index.php等文件,将 

ThinkPHP框架目录复制到guestbook文件夹内, 

并在项目根目录下新建一个W ̄ifrW文件夹. 

将ZendAMF框架复制到ThinkPHP\Vendor 

目录下(注:ThinkPHP完整版中包含的Zend. 

Framework已经包含了ZendAMF).打开index. 

php文件,ThinkPHP的人口文件一般写法如下: 

<?php 

deifne(‘APP_NAME’,’wⅥrw’); 

deifne(‘APP—PATH’,’./www’); 

require‘./ThinkPHP/ThinkPHP.php’: 

App::run(); 

? > 

打开浏览器,在浏览器地址栏中输入ht. 

tp://localhost/guestbook,回车执行,若未提示错 

误,则表示ThinkPHP框架已经配置成功.在www 

\Lib\Action下新建一个控制器,名为GbAction. 

class.php的文件,主要代码为: 

class GbAction extends Action{ 

Public function add(MYMdata){ 

¥gb=M(“guestbook”); 

¥gb一>add(¥data): 

i 

public function getAll(){ 

¥gb=M(“guestbook”); 

¥data=¥gb一>selection(); 

Return¥data; 

} 

} 

在www\Lib\Action下新建一个控制器,名 

为GatewayAction.class.php的文件,代码如下: 

class GatewayAction extends Action{ 

public function index(){ 

//启用第三方类库ZendAMF 

vendor(‘Zend.Amf.Server’): 

//导入GbAction控制器 

import(‘www.Action.GbAction’); 

//ZendAMF服务声明 

¥server=new Zend—Amf_Server(); 

//加入GbAction类 

¥servet一>setClass(“GbAction”); 

//息动ZendAMF服务 

echo(¥server一>handle()); 

} 

} 

打开浏览器,在浏览器中输入网址http:// 

localhost/guestbook/index.php/Gateway/,回车执 

行,若浏览器中返回的结果显示“Zend Amf 

Endpoint”或者提示下载gateway文件的话,表 

明ZendAMF配置成功,并且与ThinkPHP整合 

成功. 

在Flash Builder中新建一个Flex项目,在窗 

口中增加2个Button控件,1个DataGrid控件(id 

dg),1个Textlnput控件,1个TextArea控件. 

由于篇幅关系,本文只列出“查看全部留言”按 

钮的实现代码,主要代码如下: 

import flash.net.NetConnection; 

import flash.net.Responder; 

import mx.collections.ArrayCollection; 

public vaa"myAMF:string; 

myAMF=”http://localhost/guestbook/index.php/in— 

dex/Gateway”; 

public var conn:NetConnection; 

public var rspl:Responder; 

[Bindable] 

public var data:ArrayCollection; 

private function init():void{ 

rspl=new Responder(onResuhl,onFalse1); 

conn=new NetConnection(); 

conn.connect(myAMF); 

} 

private function getAllGb():void{ 

conn.call(“GbAction.getAll”,rsp1); 

f 

private function onResuhl(result:Object):void{ 

data=new ArrayCollection(); 

for(var i:String in result){ 

data.addltem(result[i]); 

} 

dg.dataProvider=data; 

} 

private function onFalsel(theFalse:Object):void{ 

//如果请求失败,则返回相应的错误信息 

} 

运行结果如图2所示,当点击按钮时,触发 

请求,通过ZendAMF的网关,我们成功地用 

ThinkPHP强大的数据模型功能获得服务器数据, 

最终返回给Flex显示. 

压羲圈 

{1

j 

 11111 111111111 

l 2 这是标韪 测试内容0 

j{3  ne蟪议 建议内窑,事-瞎很害 

l 

标题: ne)唾莹议 

内容: 建议内容,事情很多I 

匝 

图2运行界面 

4对比分析 

在进行对比分析之前,首先给出传统方法和 

本文方法的技术简明表,如表1所示. 

表1 两种开发方案的技术简明表 

针对留言板功能模块,分别使用上述2种方 

法进行了开发,运行在相同的服务器及客户端环 

境下,下面将从开发效率、请求响应时间两方面 

进行对比分析. 

4.1开发效率对比 

从表2可以看出,模块代码行与模块开发时 

间的对比上,本文的方法都明显优于传统的方 

法.注:代码行的区别主要体现在服务端PHP的 

代码量. 

表2开发效率对比表 

59 

4.2请求响应时间对比 

和模型的功能,通过ZendAMF的通信,可为Flex 

提供远程数据调用服务,而Flex强大的富客户 

端技术又弥补了ThinkPHP中视图(View)的不 

从表3可以看出,在小数据量方面,两种方 

法的请求响应时间基本一样,无明显差别.但对 

于请求大数据的时候,本文方法的请求响应时间 

足.本文的方法综合了3者的优势,为敏捷式企 

业级应用开发提供了一个较好的技术解决方案. 

[参考文献] 

[1]吴波.Flex异步通信方式的比较[J].广播与电视技 

术.2012(2):133—138. 

明显优于传统的方法.注:请求响应时间包括加 

载、初始化、执行和模板的响应时间. 

表3请求响应时间对比表 

[2]徐英钟,陈文竹,张凌霄.基于Flex与PHP的MVC 

框架整合应用研究[J].计算机光盘软件与应用, 

2010(4):108—109. 

[3]Thinkphp团队.ThinkPHP简介[Z/OL].(2010—03 

09)[2012—05—07].http://www.thinkphp.cn/a・ 

bout.htm1.2oo8. 

[4]易学武.Net平台下的AMF开发[J].电脑知识与技 

术,2010,6(23):6615—6617,6520. 

5 结语 

综上所述,使用ThinkPHP强大的数据操作 

[5]陈显军,魏祖宽.基于Flex的XML数据通信与应用 

研究[J].计算机与现代化,2008(3):l12一l14. 

Flex application development based on ThinkPHP and ZendAMF 

LIU Lei .LIN Wen一131 

(1.College ofInformation Technology,Fujian Normal University,Fuzhou Fujian 350007,China; 

2.Department of Computer S ̄ence,Minj ̄ng University,Fuzhou Fujian 350108,China) 

Abstract:In this paper,three frameworks,ThinkPHP,ZendAMF and Flex are introduced briefly,and a de— 

velopment method based on the three framework integration is proposed by a sample implement.The devel— 

opment eficiency and response tifme are contrasted by using this method and generic method respectively. 

he aim of this research is to propose a set of agile development frameworks which provide a technicalT solu’ 

tion for the enterprise application development. 

Key words:ThinkPHP;ZendAMF;Flex;MVC 

(责任编辑吴朝平) 


本文标签: 开发 框架 请求 应用 方法