admin 管理员组文章数量: 1184232
2024年4月29日发(作者:jsdate设置指定日期)
福 建 电脑 2012年第6期
ThinkPHP、ZendAMF、Flex框架整合应用开发
林文如-.刘镭
(1.闽江学院计算机科学系福建福州350108
2.福建师范大学信息技术学院福建福州350007)
摘要:本文首先简要介绍了ThinkPHP、ZendAMF和Flex开发框架。然后提出了一种将三者整合
在一起的应用开发方法,此方法结合了三种技术各自的优点,为企业级应用开发提供了一种敏捷式技
术解决方案。
关键词:ThinkPHP;ZendAMF;Flex;MVC;
0、引言
WebServiee中的XML不同在于AMF是二进制数
从MVC的角度看.Flex只是一个客户端表现 据.而XML是文本数据,AMF的传输效率比XML
层(即View),要真正的实现数据处理,就必须与
高圈。
服务端程序进行交互【1】.Flex实现RPC的方式有
支持PHP语言的AMF开发框架有:AMF.
三种:HrrrP Service、Web Service和Remote Ob.
PHP、ZendAMF、WebORB等。其中ZendAMF是
iect,前两种都是采用XML格式来传递数据,适用
Adobe公司与Zend公司合作推出的AMF框架.
于低数据量通信的RPC服务.而Remote Object 在执行效率、稳定性各方面均有较大优势。因此具
默认使用AMF(Action Message Forma0格式来传递
有广阔的应用前景
数据.适用于大数据量通信的PRC服务翻。本文将
1.3 Flex简介
研究探讨在ThinkPHP中整合ZendAMF框架的方
Hex是一种基于标准编程模型的高效RIA
法和实例.为基于Flex的富客户端提供数据交互
开发产品集.最初由Macromedia公司在2004年
的能力。
发布.基于其专有的Macromedia Hash平台.它是
1、开发框架介绍
涵盖了支持RIA(Rich Internet Applications)的开
1.1 ThinkPHP简介
发和部署的一系列技术组合。
ThinkPHP是一个免费开源的。快速、简单的 Fiex是一个高效、免费的开源框架,可用于构
面向对象的轻量级PHP开发框架.遵循Apache2
建具有表现力的Web应用程序.这些应用程序利
开源协议发布。ThinkPHP借鉴了国外很多优秀的
用Adobe Flash Player和Adobe AIR.运行时跨浏
框架和模式.使用面向对象的开发结构和MVC 览器、桌面和操作系统实现一致的部署。虽然只能
fModel/View/Controller)模式.采用单一入口模式 使用Flex框架构建Fiex应用程序.但Adobe
等,融合了Struts的Action思想和JSP的TagLib
Hash BuilderMT(之前称为Adobe Flex BuilderMT)软
(标签库)、RoR的ORM映射和ActiveRecord模
件可以通过智能编码、交互式遍历调试以及可视
式,封装了CURD和一些常用操作,在项目配置、 设计用户界面布局等功能加快开发。
类库导入、模板引擎、查询语言、自动验证、视图模
2、开发框架整合
型、项目编译、缓存机制、SEO支持、分布式数据
鉴于如上所述的。ThinkPHP、ZendAMF、Flex
库、多数据库支持、认证机制和扩展性方面均有独
三者之间具有各自的优势.那么下面阐述如何整
特的表现【3]
合三个框架.为企业级应用提供一种敏捷的开发
1.2 ZendAMF简介
方法。
AMF协议是Adobe公司的Action Message
如图1所示.整合后的框架,使用Flex来代
Format协议的简称[41.主要用于数据交互和远程过
替ThinkPHP的视图(View)部分。Flex负责前端的
程调用.在功能上与WebService相当,但AMF与
用户交互.ThinkPHP负责服务端的业务逻辑
基金项目:闽高教【200714号计算机应用技术重点学科建设
2012年第6期 福建 电脑
k已经包含了ZendAMF。
(Controller)和数据处理(Mode1),ZendAMF的
FrameWor
打开index.php文件。ThinkPHP的入13文件
AMF网关负责架起Flex与ThinkPHP之间通信的
桥梁.通信的方式为Remote Object,Remote Object
般写法如下:
一
格式来传递数据.适用于大数据量通信的PRC服
务。
<?php
框架的操作流程为:Flex客户端通过Zen.
define(‘APP_-NAME’,’www’);
define(‘APP_PATH’,’./www’);
require‘.厂rhinkPHP厂I1hinkPHP巾hp’;
dAMF网关向ThinkPHP控制器发送请求,
ThinkPHP控制器根据接收到的请求命令向
App::runO;
?>
打开浏览器.在地址栏中输入http://localhost/
ThinkPHP模型发送数据处理指令。ThinkPHP模
型通过ThinkPHP内置的数据库接口向数据库请
guestbook回车执行,若无提示错误,表示
求数据.数据库返回的数据通过上述路线原路返
ThinkPHP框架搭建成功。
回给Flex客户端界面。
在wwwkLibLAction下新建一个控制器.名为
GbAction.class.php的文件,主要代码为:
class GbAction extends Action{
P_ublic function add(¥fi,Sty){,,写留言的服务端代码
¥gb=M(“guestbook”);
¥data[title]-¥ti;
¥data[content]=¥ta;
if(¥gb->add(¥data))
r=”写留言成功!”;
else r:=”写留言失败!”;
returnE
l
public function getAll0 f,,查看全部留言的服务端代码
¥gb=M(“guestbook”);
¥data=¥gb->selection0;
return Sdata;
)
图1:框架整合图
】
3、应用实例
在www ̄LibkAction下新建一个控制器.名为
3.1实例概述
GatewayAction.class.php的文件,代码如下:
为了简明扼要的介绍三种框架的整合技术.
.
class GatewayAciton extends Action{
又不失一般性.本实例将实现一个简单的留言板
public function index0{
功能模块,包括:写留言、查看留言两个操作。
vendor(‘Zend.Amf.Server’);//启用第三方类厍ZendAMF
3.2开发环境
import(‘www.Action.GbAction’); 导入GbAction控制器
¥server-=new Zend_Amf_Scrvcr0;//ZendAMF服务声明
在WindoWs平台下.使用如下开发环境:A.
¥server->setClass(“GbAction”);,,加入GbAction类
pache 2.2.17+PHP 5.3.3+MySQL 5.5.8+ThinkPHP2.
echo(¥server->hand!e0);,/启动ZendAMF服务
1+ZendAMF 1.1.1+ZendStudio 9.0.1+Adobe Flash
)
l
Builder 4.5。
在浏览器中回车执行网址http://1ocalhost/
3-3框架整合及实例实现
guestbook/index.php/Gateway/.浏览器中返回的结
数据库设计:在MySQL数据库中新建一个表
果显示“Zend Amf Endpoint”或者提示下载gate.
guestbook,包括三个字段:id、title、content。
way文件的话.表明ZendAMF配置成功.并且与
在ZendStudio中新建一个本地PHP项目名
ThinkPHP整合成功
为:guestbook,系统自动在web服务器的根目录下
建立一个guestbook文件夹及index.php等文件.
在Flash Builder中新建一个Flex项目.在窗
13中增加两个Button控件.一个DataGrid控件
将ThinkPHP框架目录复制到guestbook文件夹
内,并在项目根目录下新建一个www文件夹。
(id=d ,一个TextInput控件(id=myTi),一个
TextArea控件 d=myTa)。由于篇幅关系。本文只列
将ZendAMF框架复制到ThinkPHP\Vendor
出“写留言”按钮的实现代码,主要代码如下:
目录下。注:ThinkPHP完整版中包含的Zend.
public vat myAMF:string;
24 福建 电脑 2012年第6期
myAMF=”http:/flocalhost/guestbook/index.php/index/Gate‘业级应用开发提供了一个较好的技术解决方案。
way”;
public var conn:NetConnection;
public var rsp:Responder;
private function init0:void{
rspl=new Responder(onResult,onFalse);
conn=new NetConnection0;
爨 {
' "’11
谨 馘 螽 罐蘸
11111"11
conn.connect(myAMF);
l
2
3
这是枥}怒
ll伪睡议
潮试内窑l
建议内窑,事l哺I瘩
private function addGb0:void{
ti=myTi.text;ta=myTa.text;
conn.call(“GbAction.add”,rsp,ti,ta);
}
标题:
内窖:
private function onResult(result:0bject):v0id
{
trace(result);
)
private function onFalse(theFalse:Object):void
f
图2:运行结果图
trace(”失败!”);
}
参考文献:
运行结果如图2所示.当点击“写留言”按钮
[1】吴波.Flex异步通信方式的比较Ⅱ】.广播与电视技术,
(02):133—138
时,触发请求,通过ZendAMF的网关,我们成功的
2012,
2】徐英钟,陈文竹,张凌霄.基于Flex与PHP的MVC框
用ThinkPHP强大的数据模型功能向服务器写人
【
数据,最终将操作结果返回给Flex显示。
4、总结
架整合应用研究[『】.计算机光盘软件与应用.2010(04):
108-109
综上所述.使用ThinkPHP强大的数据操作
thinkphp.cn/about.html,2008.
和模型的功能,通过ZendAMF的通信,为nex提
[4】易学武..Net平台下的AMF开发【『】.电脑知识与技术.
供远程数据调用服务.而nex强大的富客户端技
2010,6(23):6615—6617,6520.
术弥补了ThinkPHP中视图(View)的不足,可以
『51陈显军,魏祖宽.基于Rex的XML数据通信与应用研
说是:本应用研究综合了三者的优势,为敏捷式企
究Ⅱ].计算机与现代化.2008(03):112-114
[31thinkphp团队.Thin HP简介【z】.http://www.
(上接第55页)
.
列出顶点S=[v3(2),v5(2),v1(3),v4(3),v6(3),v7(3),
[v2,v3,v4,vl,v7]。
v2(4)],其中顶点的度用括号里的数字表示。
据上讨论分析.
最后得出,C=[v2,v3,v4,vl,
v7,v5,v6,v2]。
参考文献:
【1]Tambouratzis T., “So ̄ing the Hamiltonian cycle
problem via an artiicial neural network”,Infformation
Processing Letters,2000,75(6):237 ,242.
[2]Vladimir G D,Bettina Klinz,et a1.Exact algorithms for
the Hamiltonian cycle problem in planar graphs'.’,
Operations Research Le ̄ers,2006,34(3):269-274.
[3lP-uo W H,Maw S C.,“Linear—time algorithms or fthe
Hamiltonian problems on distance—hereditary graphs”,
选v3,C=[v2,v3,v4]。既然v2的度数比v4(3)的
Theoretical Computer Science,2005,341(1—3):411--440.
度数大4,就选v4,其相邻的顶点是v3,v1,v5。
[41Sohel R M,Kaykobad M., “Hamiltonian cycles and
tonian paths”,Information Processing Letters,2005,
v3属于C,比较v1(3)和v5(3),既然v3和v5的度
Hamil
数相等,就任选一个,比如v1,那么C=[v2,v3,v4,
94(1):37 ̄41.
v1]。
数问题的平行运算法则,平行和分布运算期刊,2004,64(
对于vl,它与v4,v7,v2相连,选v7,那么C=
1、:48 ̄67.
f51尼克拉坡罗斯S D.,关于类似极限图形的哈密尔顿函
版权声明:本文标题:ThinkPHP、ZendAMF、Flex框架整合应用开发 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1714393743a678308.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论