Flex3运用RemoteObject向AMFPHP传递对象

用个简单的实例来说明下吧,实例的效果是向服务的helloPerson方法传递一个Person对象,然后此方法返回一个包含传递过去的Person对象信息的字符串。由于只说明如何使用RemoteObject向AMFPHP传递对象,所以就没必要弄一个真正的数据表了。

首先先说AMFPHP关于和AS脚本之间类映射的步骤和过程。 既然是从FLEX向AmfPHP的映射,首先先建立一个AS的类,内容大致如下:
package test
{
[RemoteClass (alias="test.Person")] //这句话一定要有,声明这是个需要远程传递的类
[Bindable]
public class Person {
   public var name:String;
   public var age:uint;
}
}

其次建立与他对应的PHP类文件,一般来说类文件名应该与AS类名对应,但也可以不对应,具体可以参考amfphp/advancedsettings.php 这个文件里的$incoming变量,一目了然!它还包含了放置映射类的位置!默认应放置在amfphp/services/vo下,就我们这个例子而言,应该先在映射类目录vo下建立文件夹test,再在test目录下建立PHP类Person.php,内容如下:
<?php
class Person {
public $name;
public $age;
}
?>
很简单,呵呵。

第三步,建立测试程序的amfphp服务类,当然能看到这篇文章的都知道服务类应放置到amfphp/services目录下,在这里,我们建立文件HelloPerson.php,他只包含一个helloPerson方法,内容如下:
<?php
class HelloPerson {
public function helloPerson( $pPerson ) { //不用把刚才的Person.php包含进来,amfphp会自动载入
   if ( !is_a ( $pPerson, 'Person' ) ) {
    return '参数类型不正确,期待一个Person对象!');
   }
   return '你好:' . $pPerson->name . ',你的年龄是:' . $pPerson->age;
}
}
?>

OK,服务完成。

最后一步,建立一个mxml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="
http://www.adobe.com/2006/mxml" layout="horizontal" backgroundColor="#ffffff"
horizontalAlign="center" verticalAlign="top"
creationComplete="initApp()">
<mx:Script>
   <![CDATA[
    import mx.rpc.events.FaultEvent;
    import mx.rpc.events.ResultEvent;
    import mx.controls.Alert;
    import test.Person;
   
    private var person:Person;
   
    private function initApp():void {
     person = new Person();
     person.name = '马小玲';
     person.age = 28;
    }
    private function handlerResult( evt:ResultEvent ):void {
     Alert.show( evt.result.toString(), '提示' );
    }
    private function handlerFault( fault:FaultEvent ):void {
     Alert.show(fault.fault.faultString, fault.fault.faultCode.toString());
    }
    private function sendPerson():void {
     ro.getOperation( 'regardsPerson' ).arguments.arg1 = person;
     ro.getOperation( 'regardsPerson' ).send();
    }
   ]]>
</mx:Script>
<mx:RemoteObject id="ro" endpoint="
http://localhost/amfphp/gateway.php"
   showBusyCursor="true" destination="amfphp"
   source="HelloPerson">
   <mx:method name="regardsPerson" result="handlerResult(event)" fault="handlerFault(event)">
    <mx:arguments><arg1></arg1></mx:arguments>
   </mx:method>
</mx:RemoteObject>
<mx:VBox>
   <mx:Label id="response" text="返回内容将显示在这里" />
   <mx:HRule />
   <mx:Button label="发送" click="sendPerson()" />
</mx:VBox>
</mx:Application>

至此用RemoteObject传递对象到AMFPHP实例结束!所有代码本人都有测试,没有问题的。
另推荐还是看官方文档(http://www.amfphp.org/docs)来的好些,虽然文档太老了- -!。

 

转自:http://hi.baidu.com/needyu/blog/item/3ce52aa4da7a25f09152ee74.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游鱼_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值