[英]Undefined property when calling function from model
当我尝试加载模型时,没有任何问题。 代码如下(在控制器中):
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
}
我收到此错误:
遇到PHP错误
严重程度:注意
消息:未定义的属性:Shortlinks :: $ shortlinks_logic
文件名:controllers / shortlinks.php
行号:35致命错误:在第35行的C:\\ xampp \\ htdocs \\ tools_v2 \\ application \\ controllers \\ shortlinks.php中的非对象上调用成员函数test()
我对StackOverflow进行了筛选,最终得到了这个答案 ,但是我意识到我不想为我的控制器的每个功能都这样做,因此我不必添加
$logic = new shortlinks_logic();
然后打电话给一切
$logic->function();
因为我知道我仍然可以在加载时为模型提供别名
$this->load->model("shortlinks_logic", "logic");
和使用
$this->logic->test();
我为什么需要在每个函数中创建一个新对象,并且有解决此问题的方法?
我知道我可以自动加载所有模型,但是我想尽可能避免这种情况,因为不是每个人都可以访问所有模型,并且有很多模型,所以我希望某些模型可以用于某些用户(因此,为什么要在控制器内部加载)。
我知道这很长(很抱歉),所以我加粗了问题。
测试了您的代码并完美运行:-在application/models
下创建了模型文件的filname shortlinks_logic.php
class Shortlinks_logic extends CI_Model {
public function test() {
echo "TEST";
}
}
我的控制器shortlinks.php
<?php if (!defined('BASEPATH'))exit('No direct script access allowed');
class Shortlinks extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model("shortlinks_logic");
}
public function something() {
$this->shortlinks_logic->test();
}
}
这样您就可以完美地工作。
也许您的模型无法正确加载...
尝试这个:
public function __construct() {
$this->load->library("logged");
$this->load->model("shortlinks_logic");
parent::__construct();
}
我发现问题出在哪里。
由于某种原因,它不允许我加载
$this->load->library("logged");
之前
$this->load->model("shortlinks_logic");
我必须先加载模型。
例如:
$this->load->model("shortlinks_logic");
$this->load->library("logged");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.