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