在Codeigniter控制器中使用ZendAMF

时间:2011-09-20 15:35:06

标签: php zend-framework codeigniter amf zend-amf

我不确定我是否会采用最佳方法,我正在尝试使用codeigniter实现ZENDAMF。我遇到的一个问题是,我希望能够在允许用户向zendamf网关后面的服务器发出任何请求之前检查用户是否已登录。我确实问过一个关于如何让它在构造中进行检查的问题,但我发现这是不可能的。

我的下一个想法是创建网关作为控制器,这样我就可以在请求发布到zend amf服务器之前访问我的身份验证库。但是,当我调用该服务时,却无法识别任何CodeIgniter方法。

目前我没有进行登录检查,因为我想让amf服务器先运行,所以我选择的示例是尝试返回我的UserDetails。

这是我的gateway.php控制器

<?php
// Set up debug
class Gateway extends CI_Controller
{


    function __construct()
    {
        parent::__construct();

        error_reporting(E_ALL | E_STRICT);
        ini_set("display_errors", "on");


        ini_set("include_path",
        ini_get('include_path') . ':'
                        . '/Applications/MAMP/htdocs/app/application/libraries/');
        require_once("Zend/Amf/Server.php");
        // Start Server
        $server = new Zend_Amf_Server();

        // Zend_Amf_Server require.
        // Require the ZendAmfServiceBrowser class
        require_once("Zend/browser/ZendAmfServiceBrowser.php");
        // Class requires.
        require_once("services/Testservice.php");
        //require_once( "services/ReturnTests.php" ); 

        // Register Demo Classes
        $server->setClass("Testservice");
        //$server->setClass( "ReturnTests" );
        //$server->setResponse('test');
        // Add the ZamfBrowser service class so ZamfBrowser can retrieve method information.
        $server->setClass("ZendAmfServiceBrowser");
        // Set a reference to the Zend_Amf_Server object so ZendAmfServiceBrowser class can retrieve method information.
        ZendAmfServiceBrowser::$ZEND_AMF_SERVER = $server;
         $server->setProduction(false);

        // Handle ZendAMF request
        echo ($server->handle());
         redirect(base_url().'Gateway');

    }
}

这是我的测试服务

<?php

class Testservice extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
    }

function UserDetails()
    {
        $this->load->model('users_model');

        // Grab user info
        $user_id = 3;//$this->session->userdata('user_id');
        $this->user = $this->users_model->get_user_by_id($user_id);
        $this->data['user'] = $this->user;

        return $this->data;
    }
}

当我实现所有这些时,我得到以下回复:

<h4>A PHP Error was encountered</h4>

<p>Severity: Notice</p>
<p>Message:  Undefined property: Testservice::$users_model</p>
<p>Filename: services/Testservice.php</p>
<p>Line Number: 90</p>

如果我正在扩展CI_Controller,我会认为它应该允许我访问我的所有模型。

任何想法我现在真的很难过。

提前致谢

0 个答案:

没有答案