AMFPHP是PHP的远程调用(RPC, Remote Procedure
Call)工具。它可以使PHP与下述技术无缝通信:
(1) Flash 和 Flex Remoting
(2) JavaScript JSON 和 Ajax JSON
(3) XML 和XML-RPC
什么是RPC
远端程序调用(RPC, Remote Procedure
Call) 是一种客户端与服务器端交换数据方式。我们可以调用本地对象带对各种参数方法设置回调并接受调用结果。我们不用关心发送和接收数据的实现细节。实现细节通常是抽象的,就像我们在调用本地方法一样。
AMFPHP的工作原理
客户端(Flash / Flex)与服务器端(PHP) 使用相同的方式描述方法调用和复杂数据。客户端序列化请求并将它发送到网关AMFPHP。AMFPHP再执行:
(1) 反序列化请求
(2) 找到相应的远程服务类
(3) 实例化类
(4) 执行安全检查
(5)(使用指定参数)调用服务器端方法
(6) 序列化返回的数据
AMFPHP可以正确地序列化、反序列化复杂类型数据。除了对象和数组,它还支持 resources 数据连接资源,这就意味着我们可以通过调用远程方法简单返回mysql_query,amfphp 会处理这一切。如果平台支持 (目前来说,Flash Remoting 和Flex Remoting),AMFPHP还可以处理循环引用和自定义数据它也支持简单的远程调试。还有AMFPHP附带一个浏览器,它可以在创建客户端代码前测试远程服务。AMFPHP 1.0.1还添加了模板,可以自动生成客户端代码。AMFPHP 1.9 beta更是新增了对AMF3的支持。
简单示例
下面我们通过一个简单的登录示例来对AMFPHP有一个初步的认识,将分别从客户端和服务器端两个部分进行介绍。
一,Flex客户端:
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->importmx.controls.Alert;
importmx.rpc.remoting.mxml.RemoteObject;
importmx.rpc.events.*;
publicvarlogin_remoteObj:RemoteObject=null;
publicfunctioninitLoginRemoteObject():void
{//初始化RemoteObject
this.login_remoteObj=newRemoteObject();
this.login_remoteObj.source="Login";
this.login_remoteObj.destination="amfphp";
this.login_remoteObj.showBusyCursor=true;
this.login_remoteObj.endpoint="http://localhost/MyTest/amfphp/gateway.php";
this.login_remoteObj.doLogin.addEventListener("result",loginHandler);
this.login_remoteObj.doLogin.addEventListener("fault",faultHandler);
}
publicfunctiondoLogin():void
{//登陆操作,向服务器提交数据
varname:String=this.txtName.text;
varpwd:String=this.txtPassword.text;
vardata:Array=newArray();
data.push(name);
data.push(pwd);
this.login_remoteObj.getOperation("doLogin").send(data);
}
publicfunctionloginHandler(event:ResultEvent):void
{//处理服务器返回的结果
varresult:Array=event.resultasArray;
varflag:String=result[0];
if(flag=="0"){
Alert.show("登陆失败:"+result[1]);
}elseif(flag=="1"){
Alert.show("登陆成功:"+result[1]);
}elseif(flag=="-1"){
Alert.show("异常:"+result[1]);
}
}
publicfunctionfaultHandler(event:FaultEvent):void
{//出错处理
Alert.show("sorry,出错了!!!");
}
}
二,PHP服务器端
1,将amfphp文件夹置于MyTest项目的根目录下,打开浏览器输入下述地址验证amfphp是否安装成功
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> http://localhost/MyTest/amfphp/gateway.php
amfphp就是通过这个gateway来定位我们的服务类,并将请求转发给这些服务类进行处理的。
2,Login.php文件,包含了处理登陆请求的Login类,此文件置于BusinessLogic目录下
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><?php
classLogin
{
publicfunctiondoLogin($data)
{
$result=array();
try{
$name=array_shift($data);
$pwd=array_shift($data);
if($name=="phinecos"&&$pwd=="123"){
$result[]="1";
$result[]="youarevaliduser!";
}else{
$result[]="0";
$result[]="loginfailed";
}
}catch(Exception$ex){
$result[]="-1";
$result[]=$ex->getMessage();
}
return$result;
}
}
?>
3,将globals.php中的服务路径项修改如下,为amfphp指明服务类所在的目录
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> $servicesPath="../BusinessLogic/";
分享到:
相关推荐
不想传递拆分字符串,解析串行XML了吧? 厌烦JSON了? 试试AMF吧,传送多种数据格式。
适合初学者看的东西,里面详细讲述了使用 amfphp 的方法。 amfphp 到底有吗用呢?其实很简单,他可以让php给你不同类型的 数据,而不仅仅只有json那的string了。
Apache + Php + Amfphp
AMFPHP是PHP的远程调用(RPC, Remote Procedure Call)工具。
这个是官网的amfphp-2.1.1,供写flex和php的童鞋下载哇!里面附带我自己给它的使用方法。
A javascript-based standards-friendly way of making Flash content accessible to browsers without Flash installed, including screen readers and primitive
AMFPHP是Action Message Format(AMF)的一个开源PHP实现。用于在PHP与Flash播放器无缝交换数据。
amfphp2.1.1版本,可用于php与flex等前端技术的通信
amfphp flash
amfphp和flex通讯的例子,一个及时聊天的例子,适合学习amfphp的朋友和网络开发的朋友学习
AMFPHP是Action Message Format(AMF)的一个开源PHP实现。用于在PHP与Flash播放器无缝交换数据。
flex之amfphp通信实例源码,除了实例源码,还有一些其他帮助文件
flex第一步源码,flex,actionscript,as3.0,as,actionscript 3.0,flash builder,
mysql+apache+php+phpMyAdmin+amfphp 配置教程 对新手来说还是很有用的 有什么不懂的可以来我的博客。
不想传递拆分字符串,解析串行XML了吧? 厌烦JSON了? 试试AMF吧,传送多种数据格式。
amfphp 2.0 flash客户端与php服务端通信的工具
amfphp,flash,flex,php
AMFPHP是PHP的远程调用(RPC, Remote Procedure Call)工具。它可以使PHP与下述技术无缝通信: (1) Flash 和 Flex Remoting (2) JavaScript JSON 和 Ajax JSON (3) XML 和XML-RPC
很好 很强大 详细的描述了利用amfphp与flash的交互详解
amfphp1.9 flex php flex和php的桥连amfphp1.9 flex php flex和php的桥连amfphp1.9 flex php flex和php的桥连