繁体   English   中英

codeigniter - >加载多个库/类时遇到问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM