1

現在、FlexにarrayCollectionがあり、PHP(Zend_AMF)に送信したいと思います。Zend_AMF wikiによると、arrayCollectionを直接送信すると、Zend_AMFはarrayCollectionをオブジェクトとしてキャストするように強制されます。これは適切ではありません。モデルの配列が欲しいです。

最良の方法は、arrayCollectionをflexの配列に変換してから、送信することだと思います。これは本当ですか?もしそうなら、Flex 3でそれをどのように行いますか?

より良い推奨事項がある場合は、それもいただければ幸いです。

見てくれてありがとう!

4

1 に答える 1

2

実際には、PHP 側で ArrayCollection タイプを作成し、ネイティブ 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 側で使用するには、php プロジェクトに ArrayCollection.php を含めます。これを呼び出す構文は次のようになります。

$myArrayCollection = new ArrayCollection(); 

ArrayCollection を構成する配列にアクセスしたい場合は、これを行うことができます

$someArray = $myArrayCollection->source;

Flex 側では、配列コレクションを Zend AMF 経由でサーバーに直接渡すことができます。私のプロジェクトの 1 つに、ArrayCollections を持つ多くの値オブジェクトがあり、それらは PHP 側で問題なく動作します。だからそれはできる。

PHP で ArrayCollection をまったく動作させることができない場合は、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 に答える