0

これについて最善の方法を取っているかどうかはわかりませんが、ZENDAMF を codeigniter で実装しようとしています。私が抱えていた問題の 1 つは、ユーザーが 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 を拡張している場合は、すべてのモデルにアクセスできるようにする必要があります。

どんなアイデアでも、私は今これに本当に困惑しています。

前もって感謝します

4

0 に答える 0