2012-03-04 5 views
0

Я использую Zend AMF для отправки удаленных объектов в Flex.Flex десериализует общие объекты из Zend AMF вместо строго типизированных объектов

Я определил класс Constant и создал метод getASClassName(). Затем я создал класс Action script в flex.

Объекты отправляются успешно, но их десериализуют до общего Objects в Flex вместо конкретных.

EDIT: на сетевом мониторе в Flex я вижу, что значение AMF установлено на com.my.project.valueobjects.Constant. Хотя массив от event.result содержит Objects.

Что я делаю неправильно?

Php декларация класса:

<?php 
namespace Project\Entity; 

class Constant 
{ 
    public $id; 

    public $name; 

    public $description; 

    public $value; 

    public function getASClassName(){ 
     return 'com.my.project.valueobjects.Constant'; 
    } 
} 

Определение класса в гибком:

package com.my.project.valueobjects{ 

    [Bindable] 
    [RemoteClass(alias="Constant")] 
    public class Constant{ 
     public var id:Number; 
     public var name:String; 
     public var description:String; 
     public var value:String; 
    } 

Часть обработки АИФ в PHP код:

$server = new Zend_Amf_Server(); 
$server = $server->setClass("AmfService"); 
$server->setClassMap("com.my.project.valueobjects.Constant", "Constant"); 

массив объектов из PHP (дамп изготовленный с использованием print_r):

[04-Mar-2012 14:23:08] Array 
(
    [0] => Project\Entity\Constant Object 
     (
      [id] => 1 
      [name] => name 
      [description] => desc 
      [value] => 5 
      [_explicitType] => com.my.project.valueobjects.Constant 
     ) 

ответ

0

Еще один самостоятельный ответ в области удаленного доступа Flex/PHP.

Решение было довольно простым - мне нужно было изменить com.my.project.valueobjects.Constant на Constant на стороне PHP, и это было все.

Надеюсь, что это поможет кому-то в будущем.