簡體   English   中英

PhpStorm無法識別我的對象的方法

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

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