将PHP和Flex对象映射

3

我正在使用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类Session和一个PHP类Session,但它们仍然没有映射。我有一些疑问...可能很傻...
PHP类的文件名是否应该与类名相同?虽然这不是必需的,但在映射时是否会带有价值分数。
您将如何在Flex应用程序中调用这些映射对象。我的方法如下所示,但不确定是否正确。 $server->setClassMap("Session", "Session"); 上述函数中的PHP和Flex类。
此外,我的PHP会话类位于include目录中,我需要在任何地方指示它,还是ZendAMf会负责它。
Flex代码。
var userSession:Session = new Session();
sessionHold.text = userSession.userid; 

感谢您的选择。

我在我的日常工作中使用过AMFPHP,但没有使用过Zend AMF工具。在Zend工具中,他们是否有像AMFPHP中的“服务浏览器”这样的东西可用?就故障排除服务而言,那是我最好的选择。不过,我只处理过PHP方面的内容,而没有涉及Flash方面。 - artlung
1
@artlung,AMFPHP中的服务浏览器是一个独立的Flash应用程序,OP应该能够轻松地从AMFPHP下载中获取并使用作为调试工具。 - dcousineau
Charles Proxy对我来说在这方面非常宝贵。即使仅仅是作为一个很好的健全性检查工具,也非常有用。 - Joel Hooks
2个回答

4
有几件事情你需要做。通常情况下,你需要在 AS 类的元数据中添加 [RemoteClass(alias="Session")] 或在 PHP 对象中使用 Zend_Amf 的函数之一,例如 getASClassName()。请查看 Wade Arnold(Zend_Amf 的作者)的视频教程,了解有关类映射的详细信息。我相信他会帮你找到答案。
链接:http://www.wadearnold.com/tutorials/zend/classmap/

0
TypeOneError是正确的;你将需要
[RemoteClass(alias="Session")]
[Bindable]

在你的ActionScript类的顶部。

我确定还有其他几件事情可能会导致这个问题:

  • 类变量必须是公共的并且名称相同
  • ActionScript类不应该有一个定义的构造函数

哦,亲爱的。即使我在我的元标签中添加了值对象,也从未让它工作。我与卡尔斯进行了核对,发现PHP向Flex发送了严格类型的值对象,但映射不起作用。 - Jarno Lahtinen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接