Flex和Zend_AMF:如何从Flex获取Flex arrayCollection到PHP?
我目前在Flex中有一个arrayCollection,我想将它发送到PHP(Zend_AMF)。根据Zend_AMF wiki,直接发送arrayCollection会强制Zend_AMF将arrayCollection作为一个不合适的对象进行投射。我宁愿有一个我的模型阵列。Flex和Zend_AMF:如何从Flex获取Flex arrayCollection到PHP?
我认为最好的方法是将arrayCollection转换为flex中的数组,然后发送它。这是真的,如果是这样的话,我将如何在Flex 3中做到这一点?
如果您有更好的建议,我们将不胜感激。
感谢您的期待!
实际上,您可以在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端使用这个文件包括ArrayCollection.php在你的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中对象的数组。
希望这会有所帮助。如果您有进一步的问题和/或有代码示例,请告诉我。
我花了一点时间才弄清楚这一点。