在以下代码中,“/ ** @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();
没有serviceLocator;之后不适合其他开发人员处理此文件。
一些想法?代码完成非常重要。
答案 0 :(得分:2)
尝试在命名空间之前添加前导斜杠。
您的第一次尝试告诉IDE引用相对于当前命名空间的类(即,如果当前命名空间为\Website\Shop
,则FQN将为\Website\Shop\BusinessLogic\User
)。
使用前导斜线,您将使其成为FQN。所以... /** @var \BusinessLogic\User $user */