不确定我是否会以最好的方式解决这个问题,我正在尝试使用 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 我会认为它应该允许我访问我的所有模型。
任何想法我现在真的很难过。
提前致谢