Zend_AmfからFlexにリモートデータを送信する場合、オブジェクトの2つの配列プロパティが同じデータ値を持っていると、リモートエンドで同じメモリストレージを使用して逆シリアル化されます。
例:AS3オブジェクト:
スニペット:
[RemoteClass(alias="TestVO")]
public class TestVO
{
public var test1:Array;
public var test2:Array;
}
これがZend_Amfサーバーからリモートデータを受信するとき、アレイデータが同一である場合、2つのアレイに同じストレージを割り当てます。
例:リモート(ZendAMF)オブジェクトから送信します:
$this->test1 = array("foo", "bar");
$this->test2 = array("foo", "bar");
FlexデバッガーでTestVOオブジェクトをデバッグすると、次のようになります。
test1アレイ(@ 597d779)
test2アレイ(@ 597d779)
つまり、同じ配列オブジェクトを参照します。
リモートサーバーから2つの配列にわずかに異なる値を送信する場合:
$ this-> test1 = array( "foo"、 "bar");
$ this-> test2 = array( "bar"、 "foo");
Flexデバッガーでは、TestVOオブジェクトに2つの別個の配列があります。
test1アレイ(@ 54cb7e9)
test2アレイ(@ 54cb741)
AMF出力は問題ないように見えます。同じ値であっても、test1 / test2には常に2つの別々の値が送信されるので、Flexがこれを逆シリアル化する方法だと思いますか?
何か案は?ありがとう。