Eclipse Juno PHP - 跳转到实现未能正常工作。

3

从Intellij转到Eclipse。在Eclipse + Java中,似乎有强大的支持,可以通过ctrl + click跳转到成员的实现(类、接口、方法、成员变量等)。我正在运行一个PHP PDT项目,并注意到我无法像希望的那样跳转到某些内容。

一些例子:

给定:

class Foo extends Foos_Dad {

private $fooHelperObject; 

public function __contstruct(){
parent::__construct(); 
$this->foooHelperObject = new fooHelperObject(); 
}

public function doFooStuff(){
return $this->fooHelperObject->doHelperStuff(); 
}

}

当按下ctrl并悬停在Foos_Dad,parent ::,$ this-> fooHelperObject和doHelperStuff()时,如果它们在我当前查看的特定文件之外,我无法跳转到它们的实现。这很糟糕。我可以在Java中完成大部分操作,因此我怀疑自己在eclipse中配置问题。有更多Eclipse Ninja-foo的人能帮忙吗?

谢谢


对于$this的一些方法,它能够工作,但我也注意到有一些方法不行。 - Aris
@Aris - 那么,你有什么行动建议吗? - Brad
我也不知道。例如:$this->connection->prepare($sql) 可以找到 prepare 方法,但 $this->statement->bindValue 找不到。 - Aris
这主要取决于你如何包含类源代码。如果类文件是动态地或间接地从另一个脚本中包含的,Eclipse 就无法(尚未)找出它。 对于 PHP,Netbeans IDE 在这种情况下稍微好一些。 - Satish Gadhave
这至少是朝着正确方向的一步。这是一个基于CodeIgniter的遗留项目。大多数对象都是在构造函数中初始化的成员,大多数函数都是从父类继承的。你能给我举个例子,修改关系以便我可以让Eclipse更了解这些类吗? - Brad
4个回答

1

您是否拥有Java项目,而且使用PHP视角? 如果您打开了一个PHP项目,但是使用的是Java视角,那么很多功能将无法正常工作。

enter image description here

你是否设置了PHP可执行文件? 如果我没记错,它不是Eclipse的必需品,但它对于你想要的功能很有用。

Menu > Window > Preferences > PHP > PHP Executables

如果您导入了旧项目,请查看此链接:Ctrl + 单击 (PHP代码超链接检测器)和内容辅助在PHP项目中不起作用。 (创建一个新的工作区,将您的项目复制到其中)。
您是否检查过您的项目是否存在于PHP构建路径中?
Right-Click on your project > Properties > Php build path

我正在PHP视图中,并且我已经设置了可执行文件。 - Brad
在我的情况下,我还需要做另外一件事:我最初使用没有PHP开发工具(PDT)的Eclipse分发版,并创建了一个工作区。然后我安装了PDT。然后我导入了一个composer项目。PHP内容辅助功能无法正常工作。我按照这个答案中的步骤,并额外创建了一个全新的工作区。将我的composer项目导入到这个新的工作区中,最终让我获得了PHP内容辅助功能。 - Abdull

0

我可以用我的eclipse做到这一点...

但是我有一个想法:
如果你的代码自动完成也不起作用,可能是.buildpath.project文件中的条目错误或缺失。
这可能与此有关。

进入您的项目文件夹(使用资源管理器,eclipse不会显示这些文件)并打开.project文件。
重要部分位于<natures>节点下,如果没有<nature>org.eclipse.php.core.PHPNature</nature>子节点,请添加它,重新启动eclipse并重试。
如果该文件完全丢失,请添加它,以下是我的外观:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>PROJECT NAME</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.wst.common.project.facet.core.builder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.wst.validation.validationbuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.dltk.core.scriptbuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.php.core.PHPNature</nature>
        <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
    </natures>
</projectDescription>


如果这没有帮助,请打开 .buildpath 文件,它应该看起来像这样:

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

再次启动Eclipse并重试。

希望这有所帮助。


谢谢。我会看一下并回复你。 - Brad

0

Kepler提供的答案可能会解决这个问题。

根据这篇外部文章,删除workspace/.metadata/.plugins/org.eclipse.dltk.core.index.sql.h2下的文件将重置存储跳转信息的数据库。


0

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