簡體   English   中英

從模型調用函數時屬性未定義

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM