版本:Flash CS3 + amfphp 1.9 + php 5.2.0
今天在尝试用php与flash的object传递,遇到不少问题,不过总算解决了。
为了避免新手再才弯路,写出初篇总结。
其实问题不难,只是第一次遇到总归会耽误不少时间,话不多说,直接上代码:
客户端
1.生成VO类
Code
1 package vo
2 {
3 [RemoteClass(alias="vo.ProjectVO")]
4 [Bindable]
5
6 import flash.net.registerClassAlias;
7
8 public class ProjectVO
9 {
10 public var id:Number;
11 public var name:String;
12 public var status:String;
13
14 static public function register():void {
15 registerClassAlias("vo.ProjectVO", ProjectVO);
16 }
17 }
18 }
2.响应函数
远程调用就不上了,到处都是
private function onGetResult(r:ProjectVO):void {
trace(r);
}
服务端:
1.生成vo类
在amfphp目录下gateway.php文件中,设置
$gateway->setClassMappingsPath("services/vo/");
这儿可以改你自己的目录
Code
1 <?php
2 class ProjectVO
3 {
4 var $id;
5 var $name;
6 var $status;
7 // explicit actionscript package
8 var $_explicitType = "vo.ProjectVO";
9 }
10 ?>
注意,$_explicitType后的值一定要和客户端registerClassAlias中的值完全一致,否则不能匹配。
还有,也是最重要的,php类需要放在$_explicitType指定的目录下,在此例中ProjectVO.php就应该放在"services/vo/vo/"下。
2.编写服务
Code
<?php
require_once("vo/ProjectVO.php");
class Test
{
function test()
{
$proj = new ProjectVO();
$proj->id = 1;
$proj->name = "xxx";
$proj->status = "进行中";
return $proj;
}
}
?>
搞清了步骤,其实非常简单。
可怜我,呜呜呜~~~,浪费了多少时间,才摸索出来,呜呜呜~~~