我目前在Flex中有一个arrayCollection,我想将它发送给PHP(Zend_AMF)。根据Zend_AMF wiki,直接发送一个arrayCollection将迫使Zend_AMF将arrayCollection转换为一个不好的对象。我宁愿拥有一系列模型。
我认为最好的方法是将arrayCollection转换为flex中的数组,然后将其发送出去。这是真的,如果是这样,我将如何在Flex 3中做到这一点?
如果你有更好的推荐,那也值得赞赏。
感谢您的期待!
答案 0 :(得分:2)
实际上,您可以在PHP端创建一个ArrayCollection类型,并直接通过AMF发送本机ArrayCollection对象。
这是我的一些PHP代码。将其保存在名为
的文件中ArrayCollection.php
<?php
class ArrayCollection {
public function getASClassName()
{
return 'flex.messaging.io.ArrayCollection';
}
var $source = array();
function ArrayCollection()
{
$this->source = array();
}
}
要在php端使用它,请在php项目中包含ArrayCollection.php,调用它的语法如下所示:
$myArrayCollection = new ArrayCollection();
如果你想访问组成ArrayCollection的数组,你可以这样做
$someArray = $myArrayCollection->source;
在Flex端,您可以通过Zend AMF将Array Collections直接传递给服务器。在我的一个项目中,我有许多值包含ArrayCollections的值对象,它们在PHP端工作得很好。所以可以做到。
如果绝对无法在PHP中使用ArrayCollection,则可以将该数组作为Actionscript中ArrayCollection的“source”属性进行访问。代码在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中对象的数组。
希望这会有所帮助。如果您有其他问题和/或有代码示例,请告知我们。
我也花了一些时间来解决这个问题。