我在PhpStorm中编写了一些面向对象的PHP代码,但我遇到了一个问题。
我看到你需要定义这些PHPDoc注释,我正在尝试做同样的事情。 QuestionList
是我的“活动”类,MySQLAdapter
是我的另一个处理数据库和SQL查询的类。
我正在尝试将构造函数$sql_adapter
参数定义为MySQLAdapter
,这样当我按下 Ctrl + Space 时,我可以看到我的对象的可用函数,但没有任何运气。
我第一次使用connect()
方法时,IDE会自动填充方法名称,但在我将sql
字段初始化为$sql_adapter
后,IDE将无法识别我的{{1}对象的方法。
问题是什么,我目前不使用PHPDoc吗?
$sql
答案 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的评论更新了示例。