2014-10-09 77 views
0

當我嘗試加載模型時,我沒有遇到任何問題。該代碼是如(在控制器)如下:從模型調用函數時未定義的屬性

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(); 

是否有一個原因,我需要在每個函數創建一個新對象有沒有辦法解決這個問題?

我知道我可以自動加載所有的模型,這是一個選項,但我想避免這個,如果可能的話,因爲不是每個人都可以訪問所有模型,並且有很多模型,所以我想要某些模型去某些用戶(因此爲什麼我要加載控制器內)。

我知道這是相當冗長(道歉),所以我粗體問題。

+0

什麼是正好在C:\ XAMPP \ htdocs中\ tools_v2 \應用\控制器\上線35 1 shortlinks.php? – goseo 2014-10-09 11:51:44

+0

對不起,我會更新帖子以反映它是什麼行,但它是:'something()'控制器函數內部的'$ this-> shortlinks_logic-> test();'。 @AfghanWiz – Albzi 2014-10-09 11:52:29

+1

如果模型沒有指定構造函數方法,則調用父類構造函數,所以沒有理由在模型中定義一個空構造函數並調用'parent :: __ construct();'... – shadyyx 2014-10-09 11:55:59

回答

0

我想通了什麼問題是這個。

出於某種原因,這是不是讓我來加載

$this->load->library("logged"); 

$this->load->model("shortlinks_logic"); 

我只好先加載模型。

例如:

$this->load->model("shortlinks_logic"); 
$this->load->library("logged"); 
0

測試你的代碼,可以正常使用: - 創建FILNAME模型文件的shortlinks_logic.phpapplication/models

class Shortlinks_logic extends CI_Model { 
    public function test() { 
     echo "TEST"; 
    } 
} 

我控制器shortlinks.php

​​

下,您將得到完美的工作。

+0

我的模型在'applications/models'裏面。 – Albzi 2014-10-09 11:53:59

+0

和模型文件名是相同的我給 – 2014-10-09 11:54:48

+0

是的,完全一樣。我已更新我的帖子以顯示此內容。 – Albzi 2014-10-09 11:55:05

0

也許你的模型無法正確加載...

試試這個:

public function __construct() { 

    $this->load->library("logged"); 
    $this->load->model("shortlinks_logic"); 
    parent::__construct(); 
} 
相關問題