当我尝试加载模型时,我没有遇到任何问题。代码如下(在控制器中):
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 致命错误:在非对象中调用成员函数test() 第35行 C:\ xampp \ htdocs \ tools_v2 \ application \ controllers \ shortlinks.php
我搜索了StackOverflow,最终来到了this answer,但我意识到我不想为控制器的每个功能做这个,我不应该添加
$logic = new shortlinks_logic();
并通过
调用所有内容$logic->function();
因为我知道无论如何我都可以给模型加载别名
$this->load->model("shortlinks_logic", "logic");
并使用
$this->logic->test();
我有必要在每个函数中创建一个新对象吗?有没有办法解决这个问题?
我知道我可以自动加载所有可选的模型,但我想尽可能避免这种情况,因为不是每个人都可以访问所有模型而且有很多模型,所以我想要某些模型去某些用户(因此我想在控制器内部加载)。
我明白这是非常冗长的(道歉)所以我加粗了问题。
答案 0 :(得分:0)
测试您的代码并完美运行: -
在shortlinks_logic.php
application/models
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();
}
}
你会完美地工作。
答案 1 :(得分:0)
也许你的模型没有正确加载......
试试这个:
public function __construct() {
$this->load->library("logged");
$this->load->model("shortlinks_logic");
parent::__construct();
}
答案 2 :(得分:0)
我弄清楚问题是什么。
出于某种原因,它不允许我加载
$this->load->library("logged");
前
$this->load->model("shortlinks_logic");
我必须先加载模型。
例如:
$this->load->model("shortlinks_logic");
$this->load->library("logged");