在最近的一些Eclipse更新和工作区更改之后,我发现在PDT中验证我的PHP代码存在一些问题。在为我的项目重新添加所有外部库之后,每个外部类都可以解析,但对于像“DateTime”或“Exception”这样的PHP基类,我得到一个错误/注释“DateTime无法解析为类型”。 PHP验证版本设置为7.1,但更低的设置会产生错误。
如何修复此验证问题?
答案 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 functions和https://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->更新构建路径