Eclipse PDT:对于默认的php类,如DateTime,Exception等,“<class>无法解析为类型”

时间:2017-08-21 13:56:41

标签: php eclipse

在最近的一些Eclipse更新和工作区更改之后,我发现在PDT中验证我的PHP代码存在一些问题。在为我的项目重新添加所有外部库之后,每个外部类都可以解析,但对于像“DateTime”或“Exception”这样的PHP基类,我得到一个错误/注释“DateTime无法解析为类型”。 PHP验证版本设置为7.1,但更低的设置会产生错误。

如何修复此验证问题?

7 个答案:

答案 0 :(得分:10)

这里有很多可能的情况;我的是一个相当古老的项目,具有破坏的构建路径配置。但是使用GUI我无法修复它。

在eclipse关闭时将以下行添加到项目文件夹中的.buildpath文件中,然后重新启动eclipse解决了问题:

<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>

但是,如果代码使用名称空间,则需要使用\ DateTime而不是DateTime,或者在顶部添加“use DateTime”;

(使用Eclipse PDT does not propose all php functionshttps://bugs.eclipse.org/bugs/show_bug.cgi?id=502184深入研究其他问题的评论后发现的解决方案

答案 1 :(得分:4)

如果项目的根文件夹中没有名为 .buildpath 的文件,只需创建它即可。

文件的内容应该是:

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

这会将您的所有文件夹分配为“源文件夹”。

Eclipse Oxygen.3a版本(4.7.3a)

中可以正常工作

答案 2 :(得分:2)

我的项目略有不同,但是对于像我这样的新手来说值得在这里提及。
我只是使用Import> Projects from Folder or Archive导入项目。只是一个文件夹而已。
您必须右键单击导入的文件夹> Configure> Convert to PHP Project ...
Exception上的错误已消失。< / p>

答案 3 :(得分:1)

我最近在一个项目中遇到了类似的情况,该项目的代码在网络服务器上,并且服务器宕机了。恢复时,安装已更改,因此找不到我的某些外部库。这是我解决的方法:

在我的项目属性-> php->源路径->包含路径库选项卡中,我将路径添加到了外部代码。然后,在我的项目上运行Build项目,然后运行Refresh。警告消失了。

答案 4 :(得分:0)

@NextThursday提到在类名前使用'\'使用全局范围。只有当代码已经在特定命名空间内作为范围时,这才是重要的。

答案 5 :(得分:0)

我遇到一个问题:对于新项目,无法识别供应商依赖性(来自vendor文件夹)。例如。如果我有代码:

use \Psr\Log\LoggerAwareInterface

在红色下划线标有“ 导入...无法解析”的注释,在导入之外,这些类具有“ 无法解析为类型”。

尽管我有.buildpath,但是如果仔细观察,您会发现问题所在:

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

是的,没有vendor文件夹的条目。添加缺少的条目:

    <buildpathentry kind="src" path="tests"/>
+   <buildpathentry kind="src" path="vendor"/>
    <buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>

然后清理/构建项目即可立即解决问题。

答案 6 :(得分:0)

就我而言,我使用的是作曲器,那么,eclipse可以选择更新构建路径:

Composer->更新构建路径