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