IDE中CakePHP的代码完成

时间:2011-09-01 14:06:03

标签: php cakephp ide cakephp-1.3

有人建议我“使用代码完成”,我意识到虽然我的IDE已完成代码,但它无法识别从CakePHP框架继承的大多数方法和变量,最明显的是视图的Helper方法。我正在使用PhpED,但似乎它的代码完成应该像在eclipse和其他编辑器中一样工作。

我遵循this建议无济于事;我创建了一个helpers.php文件,其中包含所有帮助程序的定义,并将其包含在项目中,但代码完成仍无法与Helpers一起使用。

我认为部分问题是Mark Story的帖子来自旧版蛋糕(我在Cake 1.3上)所以我更新了Helpers的定义,看起来像这样:

$this->Form = new FormHelper();

但是任何视图仍然没有代码完成。有没有办法让这项工作?除了Helpers之外,我真的很想完成Model-> find()这样的功能,但那些也不起作用。

3 个答案:

答案 0 :(得分:2)

正如您可能已经从几个工作代码完成脚本中注意到的那样,您始终需要将它们放入范围。 含义: 你需要用他们应该使用的类来包装它们。 至少对于组件和模型等 对于帮助程序而言,这更加困难,因为它们将位于View范围中,而视图/布局中的IDE不能直接显示/可见。 我使用app helper作为范围。无论如何对我有用。更正确的是View类。

无论哪种方式,帮助者可能都没有万无一失的方法。但是,大多数IDE都应该选择它。

e.g。我的(对于phpdesigner): http://www.dereuromark.de/tag/code-completion/

但其他人相似。

答案 1 :(得分:1)

对于PhpED,您必须执行以下操作才能为$ this启用自动完成功能。

让我们假设你想在Controller中使用$ this来做类似的事情

  

$这 - >项目 - >国家 - > getCountryName($ countryId)

首先在类定义

之前添加此PhpDoc标签
/**
* @property-read Project $Project
*/
class ProjectsController....

现在输入$ this->项目应按预期工作。 接下来是项目模型类。

在这里,在类定义

之前再添加以下代码
/**
* @property-read Country $Country
*/
class Project extends AppModel

现在$ this->项目 - > Country-> getCountryName($ countryId)有效。由于PhpEDs Autocompletion按字母顺序排序,因此该方法不是100%,因此任何以A或B开头的类都将在 Country 模式的方法之前显示。

答案 2 :(得分:0)

这不是你问题的答案。

我会推荐使用完成插件一词的gedit。虽然不是IDE级别的“代码完成”插件,但它在从源文件中拾取单词并使用它们填充单词列表方面做得非常棒。它几乎适用于任何框架,任何语言,“因为构建单词列表的有机方法”。 (无耻地插入我的博客,有很多关于gedit如何成为最好的编辑器的提示和技巧:http://davidsouther.com/2011/08/gedit-tips-tricks/