PHP平台的AFM-RPC实现----amfphp(二)HelloWorld范例

来源:互联网 发布:p2p网络借贷入罪 编辑:程序博客网 时间:2024/06/10 07:46
第一部分讲了amfphp环境配置::http://hi.baidu.com/taotao5453/blog/item/ef942a1f3623e0c5a68669b5.html

这里开始做一个简单的amfphp实现Flex和PHP通信的例子。请安装第一部分配置好amfphp环境再进行下面代码。

1、服务端

在C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\3jk\AMFApp\org\zangsanfeng下新建一个HelloWorld.php,并写入代码:
<?php
class HelloWorld
{
function HelloWorld()
{
$this->methodTable = array (
'sayHelloWorld' => array (
'description' => '将字符串 “嗨!AMF-FPC for PHP”返回给Flex',
'access' => 'remote',
'arguments' => array()
)
);
}
function sayHelloWorld()
{
return "嗨!AMF-RPC for PHP";
}
}
?>

2、Flex客户端
使用Flash Builder或Flex3 新建一个Flex工程,next步骤参考下面三图:

注意:Flex sdk选择4.0以下版本,我的sdk是项目创建完后更改的,我用的sdk3.5。

-

-

-
创建完成后,在main.mxml中添加代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;

private function getData_Result(e:ResultEvent):void{
myTextArea.text = e.result.toString();
}

private function getData_Fault(e:FaultEvent):void{
myTextArea.text = e.fault.faultString;
}

]]>
</mx:Script>
<mx:RemoteObject id="myService" destination="amfphp" 
endpoint="http://localhost/3jk/gateway.php" 
source="org.zangsanfeng.HelloWorld" showBusyCursor="true">
<mx:method name="sayHelloWorld" result="getData_Result(event)" fault="getData_Fault(event)"/>
</mx:RemoteObject>
<mx:TextArea id="myTextArea" fontSize="12"/>
<mx:Button label="调用方法" fontSize="12" click="myService.sayHelloWorld();"/>
</mx:Application>

开始调试,调试页面中点击“调用方法”按钮,就会调用远程方法,并将返回结果“嗨!AMF-RPC for PHP”显示在文本框中。如图:


-
AMFPHP简单原理:
在客户端,服务端方法请求被使用RemoteObject类自动序列化为AMF格式,在服务端,AMFPHP逆序列化AMF信息。当服务端完成处理时,结果又被序列化为AMF格式,并发回Flex应用程序。服务端创建的AMF信息格式与客户端创建的AMF信息格式相同。单独的AMF信息包主体内包含了错误或响应对象,它们被表述成一个ActionScript对象。
0 0
原创粉丝点击