最佳实践,包括ZF2中的代码完成

时间:2014-02-21 13:54:29

标签: zend-framework2 phpstorm code-completion

在以下代码中,“/ ** @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;之后不适合其他开发人员处理此文件。

一些想法?代码完成非常重要。

1 个答案:

答案 0 :(得分:2)

尝试在命名空间之前添加前导斜杠。

您的第一次尝试告诉IDE引用相对于当前命名空间的类(即,如果当前命名空间为\Website\Shop,则FQN将为\Website\Shop\BusinessLogic\User)。

使用前导斜线,您将使其成为FQN。所以... /** @var \BusinessLogic\User $user */