[英]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.