Использование ZendAMF внутри контроллера Codeigniter - PullRequest
0 голосов
/ 20 сентября 2011

Не уверен, что я поступаю наилучшим образом, я пытаюсь реализовать ZENDAMF с codeigniter. Одна из проблем, с которыми я столкнулся, заключается в том, что я хочу иметь возможность проверять, вошел ли пользователь в систему, прежде чем разрешить ему делать какие-либо запросы к сервикам за шлюзом 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, я бы хотел, чтобы он позволил мне получить доступ ко всем моим моделям.

Любые идеи, которые я сейчас действительно озадачен.

Заранее спасибо

...