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