Если я отправляю удаленные данные из Zend_Amf во Flex, если два свойства массива объекта имеют одинаковые значения данных, они десериализуются на удаленном конце с одним и тем же хранилищем памяти.
Пример: объект AS3:
Отрывок:
[RemoteClass(alias="TestVO")]
public class TestVO
{
public var test1:Array;
public var test2:Array;
}
Когда он получает удаленные данные с сервера Zend_Amf, если данные массива идентичны, он выделяет одинаковое хранилище для двух массивов.
Например: с удаленного (ZendAMF) объекта, который я отправляю:
$this->test1 = array("foo", "bar");
$this->test2 = array("foo", "bar");
Когда я отлаживаю объект TestVO в отладчике Flex, я получаю:
test1 Array (@ 597d779)
массив test2 (@ 597d779)
то есть: они ссылаются на один и тот же объект массива.
Если я отправляю с удаленного сервера слегка отличающиеся значения для 2-х массивов:
$ this-> test1 = array ("foo", "bar");
$ this-> test2 = array ("bar", "foo");
В отладчике Flex объект TestVO теперь имеет два отдельных массива, как и следовало ожидать:
test1 Array (@ 54cb7e9)
массив test2 (@ 54cb741)
Вывод AMF выглядит Хорошо, он всегда отправляет два отдельных значения для test1 / test2, даже если они имеют одинаковые значения, поэтому я предполагаю, что Flex де-сериализует это?
Есть идеи? Спасибо.