Flex 正在从 Zend AMF 反序列化通用对象而不是严格类型的对象 [英] Flex is deserializing generic objects from Zend AMF instead of strictly typed objects

查看:20
本文介绍了Flex 正在从 Zend AMF 反序列化通用对象而不是严格类型的对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Zend AMF 将我的远程对象发送到 Flex.

I'm using Zend AMF to send my remote objects to Flex.

我已经定义了一个 Constant 类并创建了 getASClassName() 方法.然后我在 flex 中创建了 Action 脚本类.

I've defined a Constant class and created getASClassName() method. Then I've created Action script class in flex.

对象已成功发送,但它们在 Flex 中被反序列化为通用 Objects 而不是特定的.

Objects are send successfully, but they are deserialized to generic Objects in Flex instead of specific ones.

在 Flex 中的网络监视器上,我可以看到 AMF 值设置为 com.my.project.valueobjects.Constant.尽管 event.result 中的数组包含 Objects.

On network monitor in Flex I can see that AMF value is set to com.my.project.valueobjects.Constant. Although array from event.result contains 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';
    }
}

flex 中的类定义:

Class definition in flex:

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 中处理 Amf 的部分代码:

Part of code handling Amf in php:

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

来自 php 的对象数组(使用 print_r 进行转储):

Array of objects from php (dump made using 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
        )

推荐答案

Flex/PHP 远程处理领域的另一个自我回答.

Another self-answer in the area of Flex/PHP remoting.

解决方案非常简单 - 我需要在 PHP 端将 com.my.project.valueobjects.Constant 更改为 Constant ,这就是一切.

Solution was pretty easy - I needed to change com.my.project.valueobjects.Constant to Constant in PHP side and it was everything.

希望这对未来的人有所帮助.

Hope this helps someone in the future.

这篇关于Flex 正在从 Zend AMF 反序列化通用对象而不是严格类型的对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆