AMFクラスマッピングが機能しません

AMFエンドポイントとしてFlex 4.5とZend_AMFを使用してアプリケーションを構築しています。

PHPのCRequestというクラスをFlexのRequestというクラスにマップしたいと思います。

これは私のPHPクラスです:

<?php
namespace app\web;

class CRequest{
   public $_explicitType = 'com.site.remote.Request';

   public $stuff1;

   public $stuff2;

}

これはactionscriptクラスです:com.site.remote.Request

package com.dreamatique.remoting
{
    [Bindable]
    [RemoteClass(alias="com.site.remote.Request")]
    public class Request
    {

        public var stuff1:String;

        public var stuff2:String;

        public function Request()
        {
        }
    }
}

テストとして、エンドポイントは、リクエストに関係なく、PHPサイドから CRequest のインスタンスを返すようにしました。

私はこのようにリモートオブジェクト呼び出しを行っています:

var remoteObject:RemoteObject = new RemoteObject();
remoteObject.endpoint = "http://localhost/to/my/amf/endpoint";
remoteObject.showBusyCursor = true;
remoteObject.source = 'testing';
var op:AbstractOperation = remoteObject.getOperation(null);
op.addEventListener(ResultEvent.RESULT, result);
op.send();

public static function result(event:ResultEvent):void{

    trace(event.result);
    trace(Class(getDefinitionByName(getQualifiedClassName(event.result))));
    Alert.show(event.result.toString());

}

問題は結果が Request ではなく ObjectProxy として返されるということです。私は間違って何をしていますか?

1

2 答え

コードベースのどこかでクラスへの参照が少なくとも1つあることを確認してください。

これは一般的なトラップです。特に、リモートコールを最初に開発したとき、実際にコードをどこでも使用してしまう前に、トラップします。

クラスが参照されていない場合、クラスはコンパイルされていないため、登録されません。

初期の開発では、しばしば StaticLinker クラスを作成します:

public class StaticLinks
{
    private var request:Request;
}

私のアプリケーションでこれを参照してください:


   var linker:StaticLinks;

ところで、前の仮定で正しいです:クラスを [RemoteObject] としてアノテーションした場合、 registerClass()を呼び出す必要はありません。

2
追加された
これだった!再生した後、私は var testing:Request; のインスタンスを作成した場合、そのクラスが型付けされることを発見しました!
追加された 著者 F21,

あなたはクラスを登録するのを忘れましたか?

import flash.net.registerClassAlias;

flash.net.registerClassAlias("com.site.remote.Request", Request);
1
追加された
私が読んだもの( roboncode.com/articles/144 )と他のブログ投稿< Flexフレームワークを使用している場合はcode> registerClassAlias は必要ありませんが、間違っている可能性があります。 registerClassAlias を使用すると、オブジェクトは Request としてタイプされますが、 flash.net.registerClassAlias( "asdfsomegibberish"、Request) ; オブジェクトは依然として要求としてタイプされます。
追加された 著者 F21,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com