Сопоставление объектов PHP и Flex
-
06-07-2019 - |
Вопрос
Я использую ZendAMF для удаленного взаимодействия.
<?php
error_reporting(E_ALL | E_STRICT); //error reporting, not needed
require_once "Zend/Amf/Server.php"; //the zendAMF server
require_once "process.php"; //our test class
$server = new Zend_Amf_Server(); //declare the server
$server->setClass("process"); //load our test-class to the server
$server->setClassMap("Session", "Session");
echo($server->handle()); // needed to start the server
?>
Мой вопрос: у меня есть сеанс класса ActionScript и сеанс класса PHP, но он все равно не отображается.У меня есть некоторые сомнения...может быть глупо...
Должно ли имя файла класса PHP совпадать с именем имени класса, в этом нет необходимости, но при сопоставлении оно имеет оценку значения.
Как вы будете называть эти сопоставленные объекты внутри вашего гибкого приложения?Мой подход указан ниже, но я не уверен, правильный он или нет.
$server->setClassMap("Сеанс", "Сеанс");Это класс PHP и Flex в приведенной выше функции.
Кроме того, мой класс сеанса PHP находится внутри каталога include, если я укажу это где угодно, или ZendAMf позаботится об этом.
Гибкий код.
var userSession:Session = new Session();
sessionHold.text = userSession.userid;
Спасибо.
Решение
Есть несколько разных вещей, которые вам нужно сделать.Обычно это что-то вроде добавления
[RemoteClass(alias="Сеанс")]
к метаданным вашего класса AS или с помощью одной из функций Zend_Amf, например getASClassName(), в вашем объекте PHP.Посмотрите скринкаст Уэйда Арнольда (автора Zend_Amf):отображение классов.Я уверен, что он получит твой ответ.
Другие советы
TypeOneError верен;тебе понадобится
[RemoteClass(alias="Session")]
[Bindable]
в верхней части классов ActionScript.
Несколько других вещей, которые я определил, могут вызвать эту проблему:
- Переменные класса должны быть общедоступными и иметь одинаковые имена.
- Класс ActionScript не должен иметь определенного конструктора.