【发布时间】:2014-03-23 01:59:06
【问题描述】:
在以下代码中,“/** @var BusinessLogic\User $user */”未启用代码完成。当我在评论中将鼠标悬停在用户上时:
“多重声明:这个版本的IDE对于在项目文件中有多个定义的所有类(不管包含),都会有完成成员解析和继承分析的问题”
public function indexAction() {
/** @var BusinessLogic\User $user */
$user = $this->getServiceLocator()->get('userBusinessLogic');
$user->setUsername('testUsername');
}
我认为 Jetbrains 已经在处理它:http://youtrack.jetbrains.com/issue/WI-2760 和所有相关任务。
我发现启用此功能的唯一方法是:
use BusinessLogic\User;
public function indexAction() {
/** @var User $user */
$user = $this->getServiceLocator()->get('userBusinessLogic');
$user->setUsername('testUsername');
}
但是当我把:
use BusinessLogic\User;
进入我可以实例化用户的代码
$user = new User();
没有服务定位器;之后其他开发人员无法处理此文件。
一些想法?代码补全非常重要。
【问题讨论】:
-
尝试在命名空间前添加斜杠。您的第一次尝试告诉 IDE 引用类相对于当前命名空间(即,如果当前命名空间是
\Website\Shop,那么 FQN 将是\Website\Shop\BusinessLogic\User)。使用前导斜线,您将使其成为 FQN。所以...试试/** @var \BusinessLogic\User $user */
标签: zend-framework2 phpstorm code-completion