【问题标题】:Best Practise including code-completion in ZF2最佳实践,包括 ZF2 中的代码完成
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-08
    • 2014-04-25
    • 1970-01-01
    • 2010-11-11
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多