IDE中的CakePHP代码自动完成功能

4
有人建议我“使用代码完成”,我意识到虽然我的IDE有代码完成功能,但它无法识别大部分从CakePHP框架继承的方法和变量,尤其是视图的Helper方法。我正在使用PhpED,但它似乎像Eclipse和其他编辑器一样应该能够实现代码完成。
我按照这篇文章的建议去做,但没有效果;我创建了一个helpers.php文件,其中包含了所有Helper的定义,并将其包含在项目中,但是代码完成仍然无法与Helper一起工作。
我认为问题的一部分在于Mark Story的帖子来自于旧版本的cake(我正在使用Cake 1.3),因此我更新了Helper的定义如下:
$this->Form = new FormHelper();

但是目前还没有任何视图的代码自动完成。有办法使其工作吗?除了Helpers,我真的很想让像Model->find()这样的函数也能够自动完成,但这些也不起作用。

3个回答

2
正如您可能已经注意到的,从许多可用的代码自动完成脚本中,您始终需要将它们置于作用域内。 这意味着您需要将它们包装在应该使用它们的类中。 至少对于组件和模型等来说是这样。 对于助手来说,这更加困难,因为它们将处于不直接可以在视图/布局中使用的View作用域中,而在IDE中不可见。 我使用app helper作为作用域。反正对我来说有效。更正确的做法应该是使用View类。
无论如何,对于助手来说可能没有百分之百可靠的方法。虽然大多数IDE都应该能够识别它们。
例如我的(针对phpdesigner): http://www.dereuromark.de/tag/code-completion/ 但其他人也类似。

1

对于PhpED,您需要执行以下操作才能启用$this的自动完成。

假设您想在控制器中使用$this来执行以下操作

$this->Project->Country->getCountryName($countryId)

首先在类定义之前添加此PhpDoc标记

/**
* @property-read Project $Project
*/
class ProjectsController....

现在键入 $this->Project 应该按预期工作。

接下来是 Project 模型类。

在这里,在类定义之前再次添加以下代码:

/**
* @property-read Country $Country
*/
class Project extends AppModel

现在 $this->Project->Country->getCountryName($countryId) 工作正常。这个方法并不完全符合我的期望,因为 PhpEDs 的自动完成功能是按字母顺序排序的,所以任何以 A 或 B 开头的类都会显示在 Country 模式的方法之前。

0

这不是你问题的答案。

我建议使用带有单词自动补全插件的gedit。虽然它不是IDE级别的“代码完成”插件,但它在从源文件中提取单词并使用这些单词填充其单词列表方面表现出色。由于采用了这种有机方法来构建单词列表,因此它“只需运行”适用于几乎任何框架、任何语言。(我的博客上有很多关于gedit如何成为最好的编辑器的技巧和窍门: http://davidsouther.com/2011/08/gedit-tips-tricks/)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接