actionscript-3 - 如何使用 Zend Framework AMF 将 PHP DateTime 类映射到 ActionScript/Flex Date 类

标签 actionscript-3 apache-flex zend-framework flash-builder zend-amf

背景

好吧,我是那些从不提问并且通常可以从现有问题或论坛中找到我需要的东西的人之一......现有信息很少。

我正在使用 Flash Builder 4.6 for PHP Premium 来构建一个 Flex 应用程序,该应用程序使用 PHP Zend Frameworks 的 AMF 功能将类从 PHP 映射到 Flex 并将它们用作对象来回发送,而不是使用 XML 或 JSON。现在我正在一台本地机器上轻松完成所有操作。

问题

我在将自己的自定义 PHP 类映射到 ActionScript/Flex 类时没有遇到问题,但我一生都无法设法映射 DateTime PHP 类转换为 ActionScript Date类(class)。我在别处读到它会自动映射 DateTime反对 Date对象,但我从来没有让它工作。

奇怪的是,如果我替换所有实例,就我而言,valueObjects.DateTime,我可以让它工作。 (自动生成的 ActionScript 类)到 Date_Super_Foo.as具有 DateTime 的类属性(property)。这基本上强制 Flex 将该属性的数据解释为 Date .但是,由于所有_Super_XXX.as文件是由 Flex 自动生成的文件,每当我刷新或编辑 Flex 在 Flash Builder 中链接到的任何 PHP 服务时,它都会被重写。

评论

我当然可以通过将变量保持为字符串(它来自 MySQL 的 DateTime 字段)来快速而肮脏地完成此操作,然后只需创建一些函数将其转换为 Date对象在客户端,但我需要一个更持久和稳定的解决方案。

例子:

<?php
class Foo {  
  public $id; // int
  public $name; // string
  public $date; // DateTime
  public $bar; // custom object
}
?>

应该去--->
package {
  class Foo {
    public var id:int;
    public var name:String;
    public var date:Date; // native class
    public var bar:Bar;
  }
}

但我得到
package {
  class Foo {
    public var id:int;
    public var name:String;
    public var date:DateTime; // custom class
    public var bar:Bar;
  }
}

我尝试过如下操作:
  • gateway.php 文件
    $server->setClassMap("Date", "DateTime");
    
  • 使用 Zend_Date 取而代之的对象
    $foo->date = new Zend_Date($blah);        
    
  • 并在尝试明确映射它之后
    $server->setClassMap("Date", "Zend_Date");
    
  • 我目前在 中所做的更改_Super_Foo.as 文件(经常被覆盖)
    private var _internal_date : valueObjects.DateTime; // custom object
    


    private var _internal_date : Date; // native object
    

    我只需要它像我应该阅读的那样自动执行此操作。
  • 最佳答案

    好吧,我不得不承认,我通常在 Java 上使用 BlazeDS 而不是 Zend,但是我在传输 Calendar 对象时遇到了类似的问题(我想防止丢失时区数据)。对于 This BlazeDS 支持所谓的 PropertyProxy,它们是允许接管某些类型的序列化/反序列化过程的组件。

    我认为 ZEND 会支持类似的事情。所以另一个选择实际上是使 Zend zupport 成为完整的 Flex 类型。我查了一下,似乎整个术语在 Zend 中都不一样,但我认为这篇 stackoverflow 文章应该稍微解释一下:Zend AMF custom dispatcher

    克里斯

    关于actionscript-3 - 如何使用 Zend Framework AMF 将 PHP DateTime 类映射到 ActionScript/Flex Date 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9697713/

    相关文章:

    javascript - 动态调整 Flash 对象的大小以填充窗口

    javascript - 将 Flex/Flash 交叉编译为 Javascript

    PHPExcel 集成到 Zend 框架中

    php - 如何获取和播放存储为 MySQL BLOB 的 WAV 文件?

    actionscript-3 - 使用 if 语句未定义的属性或对象仍然给出错误

    flash - AS3 : ERROR 1046: Type was not found or was not a compile-time constant: Stage and TextField

    c - 从 C 返回的 ByteArray 格式无效

    apache-flex - 对于潜在的 Flex 开发人员来说,有哪些好的面试问题?

    php - 如何将查询的值分配给 zend 中的变量

    apache-flex - 如何从 Flex 3 中基于对象的关联数组中删除值?