Index: Zend/Amf/Parse/Amf3/Serializer.php =================================================================== --- Zend/Amf/Parse/Amf3/Serializer.php (revision 15124) +++ Zend/Amf/Parse/Amf3/Serializer.php (working copy) @@ -35,6 +35,8 @@ */ class Zend_Amf_Parse_Amf3_Serializer extends Zend_Amf_Parse_Serializer { + private $_references = array(); + /** * Serialize PHP types to AMF3 and write to stream * @@ -220,6 +222,8 @@ */ public function writeArray(array $array) { + $this->_references[] = $array; + // have to seperate mixed from numberic keys. $numeric = array(); $string = array(); @@ -250,6 +254,22 @@ return $this; } + public function writeReference($key) + { + $this->writeInteger($key << 1); + } + + private function referenceExist($object) + { + $key = array_search($object, $this->_references, true); + if($key !== false) { + return $key; + } else { + $this->_references[] = $object; + return false; + } + } + /** * Write object to ouput stream * @@ -258,6 +278,11 @@ */ public function writeObject($object) { + if(($key = $this->referenceExist($object)) !== false) { + $this->writeReference($key); + return $this; + } + $encoding = Zend_Amf_Constants::ET_PROPLIST; $className = '';