Best Practise including code-completion in ZF2

白昼怎懂夜的黑 提交于 2019-12-13 04:14:49

问题


In the following code the "/** @var BusinessLogic\User $user */" is not enabling code completion. When going by mouse over User in the comment I got:

"Multiple Declarations: this version of IDE will have problems with completion member resolution and inheritance anallysis for all classes that have multiple definitions in project files (regardles of includes)"

 public function indexAction() {
   /**  @var BusinessLogic\User $user */
   $user = $this->getServiceLocator()->get('userBusinessLogic');
   $user->setUsername('testUsername');
 }

I think Jetbrains is already working on it: http://youtrack.jetbrains.com/issue/WI-2760 and all related Tasks.

The only way I found to enable this is:

 use BusinessLogic\User; 

 public function indexAction() {
   /**  @var User $user */
   $user = $this->getServiceLocator()->get('userBusinessLogic');
   $user->setUsername('testUsername');
 }

But when I put:

use BusinessLogic\User;

into the code I can instantiate the user by

$user = new User();

without serviceLocator; not good for other developers to work on this file afterwards.

Some ideas? Code-Completion is quite important.


回答1:


Try adding leading slash before namespace.

Your first attempt tells IDE to reference class relative to current namespace (i.e. if current namespace is \Website\Shop then FQN will be \Website\Shop\BusinessLogic\User).

With leading slash you will make it FQN. So ... /** @var \BusinessLogic\User $user */



来源:https://stackoverflow.com/questions/21936380/best-practise-including-code-completion-in-zf2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!