當我嘗試加載模型時,我沒有遇到任何問題。該代碼是如(在控制器)如下:從模型調用函數時未定義的屬性
applications/controllers/shortlinks.php
:
public function __construct() {
parent::__construct();
$this->load->library("logged");
$this->load->model("shortlinks_logic"); //This model I'm interested in
}
作爲示例,shortlinks_logic
模型在此代碼:
applications/models/shortlinks_logic.php
class Shortlinks_logic extends CI_Model {
public function test() {
echo "TEST";
}
}
沒有問題有任一。然而,當我嘗試在控制器調用這個函數:
public function something($argument_one, $argument_two) {
$this->shortlinks_logic->test(); //Line 35 of following error
}
我得到這個錯誤:
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Shortlinks::$shortlinks_logic
Filename: controllers/shortlinks.php
Line Number: 35 Fatal error: Call to a member function test() on a non-object in C:\xampp\htdocs\tools_v2\application\controllers\shortlinks.php on line 35
我StackOverflow的球探,最終來到this answer,但我意識到我不想這對我的控制器的每一個功能,我不應該由
添加$logic = new shortlinks_logic();
,並呼籲一切
$logic->function();
,因爲我知道我可以給模型上負載的別名反正
$this->load->model("shortlinks_logic", "logic");
,並使用
$this->logic->test();
是否有一個原因,我需要在每個函數創建一個新對象有沒有辦法解決這個問題?
我知道我可以自動加載所有的模型,這是一個選項,但我想避免這個,如果可能的話,因爲不是每個人都可以訪問所有模型,並且有很多模型,所以我想要某些模型去某些用戶(因此爲什麼我要加載控制器內)。
我知道這是相當冗長(道歉),所以我粗體問題。
什麼是正好在C:\ XAMPP \ htdocs中\ tools_v2 \應用\控制器\上線35 1 shortlinks.php? – goseo 2014-10-09 11:51:44
對不起,我會更新帖子以反映它是什麼行,但它是:'something()'控制器函數內部的'$ this-> shortlinks_logic-> test();'。 @AfghanWiz – Albzi 2014-10-09 11:52:29
如果模型沒有指定構造函數方法,則調用父類構造函數,所以沒有理由在模型中定義一個空構造函數並調用'parent :: __ construct();'... – shadyyx 2014-10-09 11:55:59