[英]codeigniter -> having trouble loading multiple libraries/classes
好的,所以在我的基本控制器(page.php)中我有以下代码可以正常工作:
$this->load->library('Siteclass');
$mysite = new site_model();
siteclass库引用名为site_model的模型,并根据从该模型接收的数据进行实例化。 一切都很好。
现在,我想加载另一个库,以便可以实例化另一个对象。 所以我将其添加到page.php:
$this->load->library('Memberclass');
$mysite = new member_model();
但是现在我得到以下错误:
Message: Undefined property: Memberclass::$site_model
Filename: libraries/Loader.php
Line Number: 1035
据我所知,似乎加载器类在应用于Memberclass时,仍以某种方式引用site_model而不是member_model。 我检查了我的代码,我肯定是在调用正确的文件。
这是Siteclass.php的样子:
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Siteclass extends Controller {
function __construct() {
parent::Controller();
$this->load->model('Site_model');
$data = $this->Site_model->load_site_data();
// etc etc
这是Memberclass.php的样子:
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Memberclass extends Controller {
function __construct() {
parent::Controller();
$this->load->model('Member_model');
$data = $this->Member_model->load_member_data();
// etc etc
在此先感谢您的帮助!
加里
我认为您对MVC在CodeIgniter中的工作方式感到困惑。 为什么要使用loader类创建控制器? 为什么要在控制器类之外创建模型的独立实例?
在CodeIgniter中,您的URL表示控制器方法的路径。 这意味着如果你去,你的“基础控制器”应该自动实例化:
www.example.com/memberclass
或者更重要的是,如果您有这样的链接:
www.example.com/page
您应该在/application/controllers
目录中有一个名为page.php
,如下所示:
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Page extends Controller {
function __construct() {
parent::Controller();
// etc etc
此外,除非您每次调用此控制器时从模型中加载要使用的数据,否则您需要将模型调用放在此类的非构造函数方法中。 就像是:
class Page extends Controller {
function __construct() {
parent::Controller();
}
function index() {
$this->load->model('Member_model');
$data = $this->Member_model->load_member_data();
$this->load->view('myview', array('data'=>$data));
}
}
所以再次......不完全确定你在做什么背景,但看起来你并没有坚定地站在框架内。 基本上没有理由你应该使用loader类加载控制器,而且你没有理由使用PHP的new
关键字创建模型类的独立实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.