2

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がこれを逆シリアル化する方法だと思いますか?

何か案は?ありがとう。

4

2 に答える 2

2

AMFはこれを実行して、ネットワーク上である程度の圧縮を行います。これが不要な場合は、AMF3ではなくAMF0形式に切り替えることができます。しかし、ZendAMFでそれを行う方法がわかりません。

于 2009-11-11T12:36:09.510 に答える
0

AMFのZendFramework実装でバグZF-7634が見つかりました。アレイが正しくシリアル化されていません。

http://framework.zend.com/issues/browse/ZF-7634

于 2009-11-12T11:15:15.667 に答える