2011-10-28 3 views
1

AMF 엔드 포인트로 Flex 4.5 및 Zend_AMF를 사용하여 응용 프로그램을 구축하고 있습니다.AMF 클래스 매핑이 작동하지 않습니다.

PHP의 CRequest라는 클래스를 Flex의 Request라는 클래스에 매핑하고 싶습니다. 나는 엔드 포인트가의 인스턴스를 돌려 만든 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 
namespace app\web; 

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

    public $stuff1; 

    public $stuff2; 

} 

이는 액션 스크립트 클래스입니다 :

이 내 PHP 클래스입니다 CRequest PHP 측에서는 요청에 상관없이.

나는 다음과 같은 원격 객체 호출을 만드는 중이라서 :

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()); 

} 

문제는 결과가 다시 ObjectProxy하지 Request로 입력되어 제공한다는 것입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

2

당신이 당신의 코드베이스에 어딘가에 클래스에 적어도 하나의 참조가 있는지 확인하십시오.

이것은 일반적인 트랩입니다. 특히 원격 호출을 처음 개발할 때, 그리고 실제로 코드를 어디에서나 사용하기 전에 먼저 트랩합니다.

클래스가 참조되지 않으면 컴파일되지 않으므로 등록되지 않습니다.

public class StaticLinks 
{ 
    private var request:Request; 
} 

그런 다음 내 응용 프로그램이 참조 :

종종 초기 개발하는 동안, 나는 StaticLinker 클래스 생성 될 겁니다 BTW

<s:Script> 
    var linker:StaticLinks; 
</s:Script> 

을 - 당신은 당신이 이전에 올바른있어 가정 : 클래스에 [RemoteObject]으로 주석을 추가 한 경우 registerClass()에 전화 할 필요가 없습니다.

+0

이것은 그 것이었다! 놀아봤을 때, 클래스의 인스턴스를 만들면 클래스가 입력된다는 것을 발견했습니다. 'var testing : Request;'! – F21

1

수업을 등록하는 것을 기억 했습니까?

import flash.net.registerClassAlias; 

flash.net.registerClassAlias("com.site.remote.Request", Request); 
+0

Flex 프레임 워크를 사용하고있는 경우 필자가 읽은 (http://www.roboncode.com/articles/144) 및 기타 블로그 게시물에서 'registerClassAlias'는 필요하지 않지만 잘못 될 수 있습니다. 'registerClassAlias'를 사용하면 객체가'Request'로 다시 입력되지만,'flash.net.registerClassAlias ​​("asdfsomegibberish", Request);를 설정하면 객체가 요청으로 계속 입력됩니다. – F21

관련 문제