背景
好吧,我是那些从不提问的人之一,他们通常可以从现有的问题或论坛中找到我需要的东西....但是,过去几天我一直在试图解决这个问题并提出了非常现有资料很少。
我正在使用 Flash Builder 4.6 for PHP Premium 构建一个 Flex 应用程序,该应用程序使用 PHP Zend Frameworks 的 AMF 功能将类从 PHP 映射到 Flex,并将它们用作来回发送的对象,而不是使用 XML 或 JSON。现在,为了方便起见,我正在一台本地机器上完成所有操作。
问题
我没有遇到将我自己的自定义 PHP 类映射到 ActionScript/Flex 类的问题,但我终其一生都无法将DateTime
PHP 类映射到 ActionScriptDate
类。我在其他地方读到它会自动将对象映射DateTime
到Date
对象,但我从来没有让它工作。
valueObjects.DateTime
奇怪的是,如果我将所有实例(在我的情况下,自动生成的 ActionScript 类)替换为具有该属性Date
的类中,我可以让它工作。这基本上迫使 Flex 将该属性的数据解释为. 但是,由于所有文件都是 Flex 自动生成的文件,因此每当我在 Flash Builder 中刷新或编辑 Flex 链接到的任何 PHP 服务时,它都会被重写。_Super_Foo.as
DateTime
Date
_Super_XXX.as
评论
我当然可以通过将变量保留为字符串(它来自 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
我只需要它像我读过的那样自动执行此操作。