На самом деле вы можете создать тип ArrayCollection на стороне PHP и отправлять собственные объекты ArrayCollection непосредственно через AMF.
Вот мой php-код, который работает. Сохраните это в файле с именем
ArrayCollection.php
<?php
class ArrayCollection {
public function getASClassName()
{
return 'flex.messaging.io.ArrayCollection';
}
var $source = array();
function ArrayCollection()
{
$this->source = array();
}
}
Чтобы использовать это на стороне php, включите ArrayCollection.php в ваш проект php, и синтаксис для его вызова выглядит примерно так:
$myArrayCollection = new ArrayCollection();
и если вы хотите получить доступ к массиву, который составляет ArrayCollection, вы можете сделать это
$someArray = $myArrayCollection->source;
На стороне Flex вы можете передавать коллекции массивов непосредственно на сервер через Zend AMF. В одном из моих проектов у меня есть много объектов-значений, в которых есть ArrayCollections, и они прекрасно работают на стороне PHP. Так что это может быть сделано.
Если вы абсолютно не можете заставить работать ArrayCollection в PHP, вы можете просто получить доступ к массиву как к свойству «source» ArrayCollection в Actionscript. Код выглядит примерно так в ActionScript:
import mx.collections.ArrayCollection;
public var myAC:ArrayCollection = new ArrayCollection();
public var myArray:Array = new Array();
// populate your ArrayCollection with data...
myArray = myAC.source;
myArray теперь будет массивом объектов в ArrayCollection myAC.
Надеюсь, это поможет. Если у вас есть дополнительные вопросы и / или пример кода, дайте мне знать.
Мне понадобилось немного времени, чтобы понять это тоже.