所以,我正在使用HMVC在Codeigniter 3中开发一个网站,我在我的应用程序文件夹中有以下文件夹结构:
core
MY_Controller.php
modules
login
controllers
Keep_Logged.php
Login.php
所以,这是MY_Controller(我将它用作所有控制器的父级):
<?php (defined('BASEPATH')) OR exit('No direct script access allowed');
class MY_Controller extends MX_Controller {
function __construct() {
parent::__construct();
$this->load->module("template");
$this->load->module("login/Keep_Logged");
$this->Keep_Logged->cookie_authenticate();
$exceptions = array("login", "login/authenticate");
if ($this->session->user_id == NULL && !in_array(uri_string(), $exceptions)) {
redirect("/login", "refresh");
}
}
}
这就是Keep_Logged.php
<?php
class Keep_Logged extends MY_Controller
{
function __construct() {
parent::__construct();
$this->load->model("login/Login_Model");
$this->load->helper("cookie");
}
function cookie_authenticate() {
if ($user = $this->Login_Model->check_login(get_cookie("user_email"), get_cookie("user_password"), TRUE)) {
$this->session->set_userdata(array(
"user_id" => $user->user_id,
"user_email" => $user->email,
"user_name" => $user->name,
"user_kind" => $user->kind
));
}
}
}
我的问题是我无法加载Keep_Logged.php控制器,虽然我可以正常加载Login.php(或者任何其他控制器与其模块同名)。我怎样才能解决这个问题 ?我每次都会收到这个错误。
遇到PHP错误
严重性:注意
消息:未定义的属性:CI :: $ Keep_Logged
文件名:MX / Controller.php
行号:59
-
遇到未捕获的异常
输入:错误
消息:在null
上调用成员函数cookie_authenticate()文件名:D:\ xampp \ htdocs \ CIHMVC \ application \ core \ MY_Controller.php
行号:13
答案 0 :(得分:0)
您尝试在父类中调用子类的方法。将cookie_authenticate()
方法移至MY_Controller并以$this->cookie_authenticate()
方式调用。不要忘记将工作人员从Keep_Logged构造函数移动到MY_Controller构造函数。