【问题标题】:Eclipse autocomplete with $this->testEclipse 使用 $this->test 自动完成
【发布时间】:2011-05-30 09:10:51
【问题描述】:

当这个属性没有在同一个 php 文件中定义时,我们如何对属性进行自动完成。

例如,使用 ZF,在控制器中我们可以这样做

$this->view->voiture = new My_Voiture();

在视图中,我们有一个变量 $this->voiture,但是我怎样才能让它自动完成呢?

我尝试/* @var $this->voiture My_voiture */ 并没有结果...

目前,我的答案是在视图中做

/* @var $voiture My_Voiture */
$voiture = $this->voiture;

但我不喜欢它。你好点了吗?

【问题讨论】:

  • Eclipse 无法保证控制器中的行总是在视图中的行之前被调用(可能视图完全是从其他地方调用的),因此没有自动完成功能会有所帮助.最终,无论如何,您都应该在视图脚本中记录字段,因此您最好使用当前方法。

标签: php eclipse phpdoc


【解决方案1】:

我认为,在原始源中记录原始变量实际上是最好的方法。您的视图在其他文件中的所有其他用法都应继承自动完成功能,只需在其一个来源记录即可。

为了获得我期望的自动补全,我会做这些事情:

  • 在 My_Voiture 类中,确保您有用于变量和方法的文档块。这对于自动完成本身在技术上不是必需的,但它允许自动完成弹出窗口包含更多信息,而不仅仅是变量和方法。
  • 在 My_View 类中,$voiture 第一次被声明(未使用),我将放置将其类型标识为 My_Voiture 的 @var docblock。这应该足以使其 $voiture 变量的任何使用继承 My_Voiture 的属性。
  • 在 My_Controller 类中,$view 第一次被声明(未使用),我将放置 @var docblock,将其类型标识为 My_View。这应该足以使其 $view 变量的任何使用继承 My_View 的属性。

现在,在您期望 $this->view->voiture 自动完成的代码文件中——如果其中没有任何内容表明 $this 是 My_Controller 对象,则 Eclipse 在尝试时无处可启动识别 $this (然后是它的所有属性)。我想我之前看过一些 MVC 代码,因为很多“动态”属性依赖于像 $$foo 这样的“变量”。

【讨论】:

  • 但是eclipse并没有在视图和控制器之间建立链接。
  • 视图脚本被包含为一段代码而不是类的令人讨厌的副作用。
猜你喜欢
  • 1970-01-01
  • 2010-11-27
  • 1970-01-01
  • 2010-10-30
  • 2015-02-16
  • 2011-02-12
  • 1970-01-01
  • 2016-07-12
  • 1970-01-01
相关资源
最近更新 更多