Php 为什么Eclipse代码完成在某些项目上不起作用?

Php 为什么Eclipse代码完成在某些项目上不起作用?,php,eclipse,eclipse-pdt,eclipse-3.3,Php,Eclipse,Eclipse Pdt,Eclipse 3.3,我有Eclipse3.3.2和PDT做PHP开发。 我创建的所有项目,甚至SVN项目都有代码完成。 现在我刚刚打开了另一个SVN项目,它没有代码完成或PHP模板(CTRL-space在该项目中不起任何作用)。 但是,我可以打开其他项目并编写代码来完成其中的所有工作 为什么在一个项目中代码完成和模板会“关闭”,我如何才能重新打开它?也许Eclipse不理解该项目具有“PHP性质”。 尝试比较两个项目上的.project文件以查找差异。它应该包含如下内容: <natures> &l

我有Eclipse3.3.2和PDT做PHP开发。 我创建的所有项目,甚至SVN项目都有代码完成。 现在我刚刚打开了另一个SVN项目,它没有代码完成或PHP模板(CTRL-space在该项目中不起任何作用)。 但是,我可以打开其他项目并编写代码来完成其中的所有工作


为什么在一个项目中代码完成和模板会“关闭”,我如何才能重新打开它?

也许Eclipse不理解该项目具有“PHP性质”。 尝试比较两个项目上的.project文件以查找差异。它应该包含如下内容:

 <natures>
  <nature>org.eclipse.php.core.PHPNature</nature>
 </natures>

org.eclipse.php.core.PHPNature

.project文件将位于您的工作区中的项目目录下。

确保该文件在“PHP编辑器”中打开。在文件上单击鼠标右键,然后选择“打开方式”以选择正确的编辑器


如果发现您使用了错误的编辑器,您可以在Preferences»General»Content Types下更改关联

我有时也会遇到同样的问题。对我来说,用“project”->“Clean”重建PHP项目是可行的。

一个解决方案可能是包含一个虚拟PHP文件,它需要所有PHP类。因此PHP解析器也可以识别这些类。 虚拟文件示例:

if(false) {
     require_once 'class/one.php';
     require_once 'class/two.php';
     require_once 'class/three.php';
}

我注意到,有时当您在eclipse中从svn签出项目时(subversive或subclipe“将项目签出为”),即使您将其签出为php项目,它也会删除.project文件,或者它将是一个通用项目。我发现只需进入该目录并删除.project.settings/和.cach/

然后创建一个新的php项目,并指向您签出文件的目录。您应该有代码完成,svn应该链接到您的回购协议。

谢谢! 我花了一整天的时间来弄明白为什么我没有完成代码

问题是,如果创建SVN项目,.project是一个没有codecompletion引用的基本文件。您必须创建一个基本的PHP项目,比较这两个文件,并替换SVN项目中缺失的部分


现在我对项目中的每个文件都有代码完成,即使是Zend Framework library,我也遇到了一个问题,构建路径为空,因此我试图编辑的任何文件都没有代码完成。确保正确设置构建路径,尤其是从工作区以外的其他位置链接源时


例如,与apache htdocs文件夹类似。

在编辑屏幕中右键单击,转到Java->Editor->Content Assist->Advanced…相应地选择建议

查找文件。项目中的buildpath。。。将这一行放在标签之间:


保存它并重新启动eclipse。现在一切都应该好了。。。这对我很有用。:)

我已经通过启用完整的C/C++索引器(Windows->properties->C/C++->indexer)解决了这个问题,还点击了单选按钮“使用活动按钮配置”。在那之后,清洁,并建立所有


这在Eclipse CDT 3.4上起作用,只需在.project文件中添加一行代码,然后重新启动Eclipse即可获得codecompletion: 上面写着

---
 <natures>
 </natures>
---
---
---
之后的变化是必须的

---
 <natures>
  <nature>org.eclipse.php.core.PHPNature</nature>
 </natures>
---
---
org.eclipse.php.core.PHPNature
---

应该可以了。

如果您来这里是想在php eclipse中完成代码,但不工作,请确保您的项目作为php项目得到支持。右键单击项目,然后转到配置->添加php支持。如果您有正确的代码辅助设置,它应该可以立即工作。有时像我这样的新手会对项目进行调整,或者以干净而不是php的方式启动项目,所以eclipse不知道如何处理该项目

注意

除了已经提到的让整个自动完成帮助工作的解决方案之外,还有另一个怪癖:它可能无法启用


进入窗口>属性,然后进入PHP>编辑器>代码辅助(JAVA有一个类似的选项)并设置“启用自动激活”,最好设置一个您认为合适的延迟(0ms)。如果程序突然决定在没有提示的情况下为您做一些事情(并且做得不对),您会感到困扰,取消选择“自动插入单个提案”,您应该会没事的。

如果您遇到此问题,请按照以下步骤操作:

  • 在项目树中选择“PHP包含路径”
  • 右键单击它,然后单击“生成路径>配置生成路径”
  • 在打开的窗口中,添加您想要构建的文件夹,这样它就可以进行代码辅助

仅此而已:)我希望它能解决您的问题,我解决了我的问题:)

我必须右键单击PHP浏览器中的项目,转到“PHP构建路径”。这是空的。我单击“添加文件夹”,选中项目根文件夹旁边的复选框,然后单击“确定”,然后再次单击“确定”


在那之后,代码完成似乎起了作用。如果你问我的话,应该是开箱即用,但不管怎样。

@Guido PHPNature不能解决这个问题

@Edward Tanguay是的,这是因为当您创建新的PHP项目时,eclipse会添加带有

<?xml version="1.0" encoding="UTF-8"?><buildpath>
<buildpathentry kind="src" path=""/>
<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/></buildpath>


导入现有项目时,eclipse不会生成.buildpath文件,但您可以手动添加该文件或使用existin源代码创建新的PHP项目(您可以在向导中选择)。

检查项目库。可能是您包含了两个这样的jar文件,其中有相同的类可用,或者说代码中的一个类可以在两个jar文件中引用。在这种情况下,eclipse也会停止辅助代码,因为它完全混淆了


检查这一点的更好方法是转到assist不起作用的文件并注释那里的所有导入,而不是逐个添加导入并在每次导入时检查代码助手是否起作用。您可以很容易地找到具有重复引用的类。

因为存储库中有一个.project文件,所以我没有机会打开它