[英]PhpStorm won't recognize the methods of my object
我在PhpStorm中編寫了一些面向對象的PHP代碼,但遇到了問題。
我看到您需要定義這些PHPDoc注釋,而我正在嘗試做同樣的事情。 QuestionList
是我的“活動”類, MySQLAdapter
是我的另一個處理數據庫和SQL查詢的類。
我試圖將構造函數$sql_adapter
參數定義為MySQLAdapter
以便在按Ctrl + Space時可以看到對象的可用功能,但沒有任何運氣。
第一次使用connect()
方法時,IDE會自動完成方法名稱,但是在將sql
字段初始化為$sql_adapter
,IDE將無法識別我的$sql
對象的方法。
有什么問題,我當前不使用PHPDoc嗎?
/**
* @param QuestionList MySQLAdapter $sql_adapter
*/
public function __construct($sql_adapter){
$this->questions = array();
$this->sql = new MySQLAdapter();
/* autocompletes this one */
$this->sql->connect();
$this->sql = $sql_adapter;
/* won't autocomplete this one */
$this->sql->connect();
}
@param QuestionList MySQLAdapter $sql_adapter
是毫無意義的typehint。 它試圖告訴IDE MySQLAdapter
的類型為QuestionList
並帶有$sql_adapter
的解釋。 那顯然是沒有道理的。 注釋必須是:
@param MySQLAdapter $sql_adapter
更好的是,使用PHP的類型提示:
public function __construct(MySQLAdapter $sql_adapter) ..
是的,您可以使用PHPDocs使其正常工作。
例如,對象成員$sql
應該在類中聲明和記錄:
<?php
class Test {
/**
* @var MySQLAdapater
*/
private $sql;
/**
* @param MySQLAdapter $sqlAdapter [description]
*/
public function __construct(MySQLAdapter $sqlAdapter) {
$sqlAdapter; // …is recognized as type MySQLAdapter through @param doc-comment
$this->sql; // …is recognized as type MySQLAdapter through @var doc-comment
}
}
現在,IDE可以將$this->sql
任何用法識別為MySQLAdapter
類型。
根據@ashnazg中的評論更新了示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.