PhpStorm不会认识到我的对象的方法

时间:2014-10-22 13:19:38

标签: php phpstorm phpdoc

我在PhpStorm中编写了一些面向对象的PHP代码,但我遇到了一个问题。

我看到你需要定义这些PHPDoc注释,我正在尝试做同样的事情。 QuestionList是我的“活动”类,MySQLAdapter是我的另一个处理数据库和SQL查询的类。

我正在尝试将构造函数$sql_adapter参数定义为MySQLAdapter,这样当我按下 Ctrl + Space 时,我可以看到我的对象的可用函数,但没有任何运气。

我第一次使用connect()方法时,IDE会自动填充方法名称,但在我将sql字段初始化为$sql_adapter后,IDE将无法识别我的{{1}对象的方法。

问题是什么,我目前不使用PHPDoc吗?

$sql

2 个答案:

答案 0 :(得分:4)

@param QuestionList MySQLAdapter $sql_adapter是一个荒谬的类型提示。它尝试告诉IDE MySQLAdapter类型为QuestionList,并附有$sql_adapter的解释。这显然毫无意义。注释必须是:

@param MySQLAdapter $sql_adapter

更好的是,使用PHP的类型提示:

public function __construct(MySQLAdapter $sql_adapter) ..

答案 1 :(得分:3)

是的,您可以使用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的评论更新了示例。