2013-11-14 227 views
8

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

enter image description here

enter image description here

enter image description here

$data['persons']=$this->**person**->get_person(); =來自Persons類此語法中,有消息 「字段中personPersons未找到」。

你能否指導我如何解決這個問題,但實際上輸出結果很好,它只是在Persons類中檢索數據而不發出警告信息。

+0

您的模型類命名是否正確? CodeIgniter在命名/套管方面有規定。另外,你在那裏有構造函數,對嗎? – minboost

+0

我的模型班的名字是「Person」,而我的控制者是「Persons」。 – Echusen

+0

你想用這個'/ * @var \ person $ data * /'來實現什麼?我明白你要聲明'$ data'變量作爲Person類的一個實例。或者是其他東西? – LazyOne

回答

-1

正常情況下,大多數人在Model類名稱後添加'_model'後綴。我建議你用「Person_model」打電話給你的模式「person_model」像這樣重命名你的模型:

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

我認爲你可能會發現這是一個合適的解決方案!

+0

我試着將模型類的名稱改爲「person_model」,但沒有任何改變。 – Echusen

+0

我認爲問題出在phpstorm上,因爲我成功地檢索了數據。 – Echusen

+0

我覺得問題是你的問題不清楚。你問的是一個* IDE錯誤*不是一個實際的代碼問題,對吧?這不是很清楚。 – minboost

15

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

PhpStorm對CodeIgniter框架沒有特別的支持,無法猜出$this->person的來源以及它的類型。

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

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

...哦魔法 - 它的工作原理: enter image description here

2

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

class Custom extends CI_Model {} 

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

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

現在對於phpStorm拿起這個類正確我最初添加的芯類上方的PHPDoc的@property評論如其他人所描述(或者是CI_Controller類或單獨CI_phpStrom.php文件以上)這樣的:

* 
* @property Custom $custom 
* 

然而,這二dn't去除問題,因爲變量名稱變爲情況下,這種情況下,敏感的,我不得不寫:

* 
* @property Custom $Custom 
* 

我上面的控制器代碼正確地拿起類。另一種方法是調用函數時使用小寫字母(這個工程即使你的模型聲明中使用大寫)

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

有趣的這一切大寫或小寫,如果我把我的模型類「Custom_model」沒有關係 - 那麼如果將PHPDoc屬性變量設置爲$ Custom_model或$ custom_model,則不會發生變化...