我想开始一个新的Zend项目,目前我正面临一些关于Eclipse PDT的问题...我的问题是,Eclipse for PHP中的代码完成根本不起作用。
我尝试了很多不同的教程等,例如制作一个新项目并导入文件;制作新工作区并在那里导入项目;几乎所有可能的构建路径设置和库导入组合;删除.metadata中的几个文件(如果你谷歌的话,你会发现很多像这样的教程),但没有任何效果。
[编辑]还设置了PHPNature(感谢tranisstor):
<natures>
<nature>org.eclipse.php.core.PHPNature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
</natures>
(如果只设置了PHPNature,它也不起作用,另外没有其他功能)
[/编辑]
详细问题:我创建了一个新的Zend项目,并尝试在IndexController.indexAction()中开始编码。我做的第一件事:我输入$this->
,但没有代码完成......我想也许我需要添加Zend库,我做了。当我点击Zend_Controller_Action
中的class IndexController extends Zend_Controller_Action
时,我可以看到Zend_Controller_Action
的文档,我也可以按 F3 并显示相应的文件...其中意味着,Zend已成功添加为库。
我也试过 Ctrl + Space ,但没有任何反应。顺便说一下,像isset()
这样的标准PHP函数也不会出现在代码完成中
有人知道如何解决这个问题吗?我正在使用Eclipse Juno,Eclipse PDT 3和Zend Framework 1.x(不完全确切,但它不是ZF2,如果我打开http://localhost
它会很好。
我很感激任何帮助
答案 0 :(得分:30)
将eclipse升级到Kepler时遇到了同样的问题。以下对我有用:
删除workspace / .metadata / .plugins / org.eclipse.dltk.core.index.sql.h2下的文件
原因是工作区旧DLTK索引不符合新版本,需要重建。启动eclipse并重新生成DLTK索引。
在此之后,代码完成再次为我工作。
答案 1 :(得分:4)
我觉得你,我不得不经常处理这个问题,并且提到的 .project 文件修改并不能解决问题。 是什么帮助了我:
编辑 .buildpath 文件并添加
<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>
我的完整构建文件可能看起来很糟糕。像这样:
<?xml version="1.0" encoding="UTF-8"?>
<buildpath>
<buildpathentry kind="src" path=""/>
<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>
</buildpath>
我还将包含php文件的文件夹添加到构建和包含路径(人民币超过项目),但我不认为这是必要的,最重要的部分是修改.buildpath文件我
希望有帮助...
答案 2 :(得分:2)
标准解决方案(Eclipse forum)对我不起作用。解决这个问题的原因如下:
DLTK数据库刷新需要一段时间(它可能会阻塞你的机器几分钟,耐心等待)但是它开始运转良好。
答案 3 :(得分:1)
删除工作区/ .metadata / .plugins / org.eclipse.dltk.core.index.sql.h2 / *。它应该有用。
希望它有所帮助!
答案 4 :(得分:1)
答案 5 :(得分:0)
也许您需要编辑.project-File并添加“PHP nature”标记。有关详细信息,请参阅this thread。我曾经在svn版本控制下放置一个项目之后遇到过这个问题,这似乎是一个常见的问题。
答案 6 :(得分:0)
我在eclipse forum找到了解决方案。降级到PDT 3.1.2解决了这个问题。
此致 马立克
答案 7 :(得分:0)
在此页面上尝试了其他可能的解决方案之后,我设法使用Eclipse Juno中最新的Dynamic Languages Toolkit在PDT 3.2中完成代码完成。
Juno默认安装DLTK 4.0版,所以我从这里下载了DLTK 5.0:http://download.eclipse.org/technology/dltk/downloads/drops/R5.0/R-5.0-201306060709/。使用核心框架&gt; EMF &gt; 运行时版本链接,下载zip文件,因此您需要进行本地安装: 在Eclipse中选择帮助&gt; 安装新软件&gt; 添加&gt; 存档&gt;导航到zip文件&gt;在名称框中键入 DLTK 并确认。
使用Eclipse的安装新软件从PDT存储库获取PDT 3.2(如果尚未安装):http://download.eclipse.org/tools/pdt/updates/3.2/release
选项2:在我尝试上一个方法之前,我安装了PDT 3.1,这是我从Juno更新站点(而不是PDT存储库)获得的: 安装新软件&gt; http://download.eclipse.org/releases/juno。代码完成工作在3.1,所以这是另一种可能性。
答案 8 :(得分:0)
我有类似的问题,但只涉及一个PHP文件。然后我发现我使用以下语法来初始化方法中的变量:
$rule = ($fullValidation)?(new StartTimeRule()):(new NullRule());
问题似乎是使用内联条件。代码工作但显然打破了一些Eclipse功能,如F3命令,自动完成,大纲视图等。我可能是错的,但我认为这是DTLK索引器的错误。
我使用标准if语句更改了该行,而不是内联条件,并且所有功能现在都可以再次使用。
希望这有帮助!
答案 9 :(得分:0)
现在所有人都应该像魅力一样(在Kepler Service Release 2上)