用AMFPHP传递自定义类
客户端与服务器使用AMFPHP通信时不仅可以直接传递数字,字符,数组等基本数据类型外,还可以传递更复杂的数据类型。这意味着你可以传递
自定义类的实例。
1.在客户端有个名为ValueObject的AS3类。
该类有id,value和description三个属性。[RemoteClass(alias="")]元标签用来注册该类,服务器就可以根据注册名来查找对应的服务器类。该元标签必须要有,但是别名alias可以任意,不过建议写成完整的限定名。
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522019.gif)
1
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
2
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522019.gif)
3
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522151.gif)
4
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522151.gif)
5
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522151.gif)
6
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522139.gif)
7
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522151.gif)
8
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522151.gif)
9
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522151.gif)
10
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522151.gif)
11
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522151.gif)
12
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522151.gif)
13
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522139.gif)
14
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522105.gif)
15
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522105.gif)
16
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522184.gif)
2.在服器端对应有一个名为ValueObject的PHP类。
该类也有有id, value和description三个属性。该类中有个属性$_explicitType用来和客户端的类对应起来。如果你使用的版本是PHP5,那么这个属性其实是多余的。
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522019.gif)
1
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
2
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
3
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
4
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
5
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
6
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
7
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
8
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
9
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
10
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
11
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
12
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
13
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
14
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
15
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
16
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
17
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
3.在AMFPHP的services目录下建立一个服务类ClassMapService。
该类有一个方法updateMyObject,用来接受客户端的自定义类型,并且返回一个服务器端的自定义类型。遗憾的是,客户端的自定义类型没有自动转换成服务器的自定义类型,我们需要手动实现它,PHP类ValueObject有个init方法就是为了达到这个目的。
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522019.gif)
1
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
2
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
3
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
4
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
5
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
6
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
7
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
8
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
9
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
10
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
11
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
12
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
13
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
创建一个客户端应用程序来跟ClassMapService交互。
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522019.gif)
1
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
2
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
3
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
4
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
5
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
6
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
7
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
8
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
9
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
10
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
11
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
12
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
13
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
14
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
15
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
16
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
17
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
18
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
19
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
20
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
21
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
22
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
23
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
24
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
25
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
26
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
27
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
28
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
29
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
30
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
31
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
32
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
33
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
34
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
35
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
36
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
37
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
38
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
39
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
40
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
41
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
42
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
43
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
44
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
45
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
46
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
47
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
48
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
49
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
50
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
51
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
52
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
53
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
54
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
55
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
56
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
57
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
58
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
59
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
60
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
61
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
62
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
63
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
64
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
65
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
66
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
67
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
68
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
69
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
70
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
71
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
72
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
73
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
74
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
75
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
76
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
77
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
78
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
79
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
80
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
81
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
82
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
83
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
84
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
85
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
86
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
87
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
88
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
89
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
90
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
91
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
92
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
93
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
94
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
95
![](http://www.pqshow.com/program/UploadFiles_9510/200909/2009091213522010.gif)
5.运行程序。
可以发现返回的数据中id和value都包含了输入的数据,而description属性比较不同,原因是客户端的ValueObject类中还有个一个元标签[Transient]。该标签的作用就是向后台传送数据时忽略这个属性的值。如果你的需求不需要交互某个属性,就可以将它设置为[Transient]来减少数据传输。