1

我目前在 Flex 中有一个 arrayCollection,我想将它发送到 PHP (Zend_AMF)。根据 Zend_AMF wiki,直接发送 arrayCollection 将强制 Zend_AMF 将 arrayCollection 转换为一个不好的对象。我宁愿有一系列我的模型。

我认为最好的方法是将 arrayCollection 转换为 flex 中的数组,然后将其发送过来。这是真的吗,如果是这样,我将如何在 Flex 3 中做到这一点?

如果您有更好的建议,那也将不胜感激。

感谢您的关注!

4

1 回答 1

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 将数组集合直接传递到服务器。在我的一个项目中,我有许多包含 ArrayCollections 的值对象,它们在 PHP 端工作得很好。所以可以做到。

如果您绝对不能让 ArrayCollection 在 PHP 中工作,您可以将数组作为 Actionscript 中 ArrayCollection 的“源”属性访问。代码在 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 中的对象数组。

希望这可以帮助。如果您还有其他问题和/或有代码示例,请告诉我。

我也花了一点时间才弄清楚这一点。

于 2009-09-22T21:10:06.677 回答