0

我按照本教程中的说明将 Zend AMF 设置为将数据从我的 flash 应用程序传递到我的 PHP 应用程序的一种方式:

http://codeigniter.com/forums/viewthread/180414/

所以我有目录结构和那里描述的一切。这是我的网关控制器:

class Gateway extends CI_Controller
{
        function __construct()
        {
                 parent::__construct();
                 $this->load->library('zend');

                 //root_folder + application + controllers + amf + services
                 define('SERVICES_FOLDER', APPPATH.'controllers/amf/services/');
        }

    public function index() 
    {

            $server = new Zend_Amf_Server();

            $server->setProduction(false);

            //$server->addFunction('testservice');

            $server->addDirectory(SERVICES_FOLDER);

            echo  $server->handle();
    }

}

APPPATH 是 /application/,所以 SERVIES_FOLDER 定义的路径是“/application/controllers/amf/services”,这是我的文件“testservice.php”所在的位置。

当我尝试在闪存中连接到该服务时:

var gateway:String = "http://mysite.com/amf/gateway";
con.connect(gateway);
con.call("Testservice.getMessage", new Responder(onResult, onFault));

它调用 onFault 方法并显示错误:

在注册表中找不到名为“Testservice”的插件;

这让我认为 Gateway.php 中的 addDirectory() 行在某种程度上是问题所在。有趣的是,我也无法通过 URL 访问 testservice 功能,即访问 mysite.com/amf/services/testservice。

对这里可能发生的事情有任何想法吗?

4

2 回答 2

0

想通了,有点。

我没有使用我没有运气的 addDirectory 方法,而是使用了 setClass 方法并在 gateway.php 文件中创建了另一个具有这些功能的类,现在我可以从 Flash 连接到这些功能。

于 2011-09-02T19:55:08.390 回答
0

在我的服务控制器中使用 parent::__construct() 时,我遇到了这个问题。一旦我删除它,问题就消失了。

于 2013-10-02T16:09:08.080 回答