2014-10-09 76 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(); 
} 
相关问题