Задний план
Хорошо, я один из тех парней, которые НИКОГДА не задают вопросы и которые обычно могут найти то, что мне нужно, из существующих вопросов или форумов ... но, увы, я потратил последние несколько дней, пытаясь понять это, и придумал очень мало существующей информации.
Я использую Flash Builder 4.6 для PHP Premium для создания приложения Flex, которое использует возможности AMF PHP Zend Frameworks для сопоставления классов из PHP в Flex и использования их в качестве объектов для отправки туда и обратно вместо использования XML или JSON. Прямо сейчас я для простоты делаю все это на одном локальном компьютере.
Проблема
У меня нет проблем с отображением моих собственных пользовательских классов PHP в классы ActionScript / Flex, но я не могу, хоть убейтесь, сопоставить DateTime
класс PHP с классом ActionScript Date
. Я читал в другом месте, что он автоматически сопоставляет DateTime
объекта с Date
объектами, но мне так и не удалось заставить его работать.
Как ни странно, я могу заставить его работать, если заменю все экземпляры, в моем случае, valueObjects.DateTime
(автоматически сгенерированный класс ActionScript) на Date
в классе _Super_Foo.as
, который имеет свойство DateTime
. Это в основном вынуждает Flex интерпретировать данные этого свойства как Date
. Однако, поскольку все _Super_XXX.as
файлы являются файлами, автоматически созданными Flex, они перезаписываются каждый раз, когда я обновляю или редактирую ЛЮБУЮ службу PHP, на которую Flex ссылается в Flash Builder.
Замечания
Конечно, я мог бы сделать это быстрым и грязным способом, сохранив переменную в виде строки (она поступает из 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
to
private var _internal_date : Date; // native object
Мне просто нужно, чтобы это делалось автоматически, как я читал.
new Date(timestamp)
. - person Philipp Kyeck   schedule 14.03.2012Numbers
, а неints
(временные метки представлены в Java какlongs
- не так уверен в php) - person divillysausages   schedule 24.03.2012