簡體   English   中英

找不到PhpStorm CodeIgniter類

[英]PhpStorm CodeIgniter class not found

你能幫我解決這個問題。 我是CodeIgniter和PhpStorm的新手,我遇到了問題。 PhpStorm IDE顯示錯誤,即使代碼工作正常( Persons (控制器)類無法找到Person (模型)類)。

在此輸入圖像描述

在此輸入圖像描述

在此輸入圖像描述

$data['persons']=$this->**person**->get_person(); =來自Persons類的這個語法,有一條消息“在類Persons找不到Field person ”。

你可以告訴我如何解決這個問題,但實際上輸出是好的,它會在Persons類中檢測數據而不會發出警告消息。

person屬性( $this->property )未顯式聲明,因為它是通過PHP的魔術方法創建和訪問的。

PhpStorm沒有對CodeIgniter框架的特殊支持,也無法猜測$this->person來自哪里以及它是什么類型。

但您可以使用@property標記幫助IDE - 在實際類之前只是一個小的PHPDoc注釋。

/**
 * @property Person $person Optional description 
 */
class Persons extends CI_Controller {

......而且魔術 - 它有效: 在此輸入圖像描述

LazyOne的答案最初對我不起作用。 經過一些測試后,我發現我的問題是關於如何在PHPDoc中聲明屬性的大小寫相關 - 希望以下觀察可以幫助其他人。 這是我必須聲明我的模型類:

class Custom extends CI_Model {}

在我的控制器中,我加載並使用模型,例如以下方式:

$this->load->model('Custom')
$table = $this->Custom->get();

現在讓phpStorm正確地選擇這個類我最初在其他人(在CI_Controller類或單獨的CI_phpStrom.php文件之上)描述的核心類上面添加了一個PHPDoc @property注釋,如下所示:

*
* @property Custom $custom
*

但是,這並沒有消除這個問題,因為變量名在這種情況下變得區分大小寫,我不得不寫:

*
* @property Custom $Custom
*

為我上面的控制器代碼正確地拿起類。 另一種方法是在調用函數時使用小寫(即使你的模型聲明使用大寫,這也有效)

$this->load->model('custom')
$table = $this->custom->get();

如果我調用我的模型類“Custom_model”,所有這個大寫或小寫的有趣的事情並不重要 - 如果將PHPDoc屬性變量設置為$ Custom_model或$ custom_model,它就沒有變化......

通常,大多數人將“ _model ”后綴添加到Model類名稱中。 我建議您使用“Person_model”重命名模型,調用模型“person_model”,如下所示:

$this->load->model('person_model');
$this->person_model->get_person();

我想你可能會發現它是一個合適的解決方案!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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