当我尝试加载模型时,我没有遇到任何问题。该代码是如(在控制器)如下:从模型调用函数时未定义的属性
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