当前位置:  开发笔记 > 编程语言 > 正文

类存在多个定义

如何解决《类存在多个定义》经验,为你挑选了5个好方法。

我正在使用Kohana框架,它允许多个类定义(在应用程序和系统子文件夹中).我正在使用phpstorm作为一个给我消息的IDE multiple definitions exist for class.有没有办法告诉phpStorm哪个类定义是正确的?



1> LazyOne..:

有没有办法告诉PhpStorm哪个类定义是正确的?

不幸的是,你不能.

https://youtrack.jetbrains.com/issue/WI-17646 - 观看此门票(星级/投票/评论)以获得有关任何进展的通知.

ATM你或者只是忽略了挥手......或者你可以配置检查以不报告这种情况(Settings/Preferences | Editor | Inspections | Undefined | Undefined class | Don't report multiple class declaration potential problems).

即使配置了这种检查,IDE仍会询问您要跳转到哪个类声明(这是正确的行为,因为IDE不知道您是否希望查看原始实现或实现自己的实现).


唯一的另一种方法 - 确保项目中只有一个具有相同名称的类:

将整个文件夹标记为已排除

将单个文件标记为纯文本

两者都可以通过项目视图中的内容菜单获得,并且仅适用于项目文件(例如,如果尝试应用于库范围,将无法使用或无效).


对于PhpStorm 2018,选项位于```Settings | 编辑| 检查| PHP | 未定义| 未定义的类| 不报告多个类声明潜在问题```
@Meglio是的-这就是IDE的行为-如果多个具有相同名称的类的行为很奇怪。最好的-从项目中排除重复项-整个文件夹(标记为已排除)或单个文件(标记为纯文本)。我想https://youtrack.jetbrains.com/issue/WI-17646将是观看之后的正确门票...

2> kuba..:

您应该忽略完整的缓存文件夹.

转到设置>目录

选择 var\cache

将其设置为"排除"

来自:https://github.com/Haehnchen/idea-php-symfony2-plugin/issues/301



3> Maxim Korets..:

我找到了解决问题的可能方法 - 我可以 mark file as plain


这甚至都不是解决方案.你怎么期望代码完成或提示等.如果你真的不需要这个,停止使用IDE ...开始使用记事本.
并不总是适用,但为我工作;)谢谢!
这是一个解决方案,但到目前为止是最糟糕的解决方案.库巴的建议有效.

4> Maug Lee..:

作为变体,您可以仅针对特定班级关闭检查.将光标underwaved类的名称里面,然后Alt+Enter→交通Inspection options→交通Supress for statement

PHPStorm补充道

/** @noinspection PhpUndefinedClassInspection */

上面的类声明和类名不再是underwaved.



5> 小智..:

我到处都是网络,并没有一个选项对我有用...我已经苦苦挣扎了几个月,今天我找到了一个解决方案,所以如果以上都不适合你,请尝试重新定义PHP包括路径列表.在"设置">"语言和框架">"PHP"下,确保仅配置包含项目或应用程序使用的源路径的文件夹.

我的场景是我做了很多软件包开发,虽然我的软件包都在一个项目中,但是在我的作曲家配置中它们也在"vendor"中"符号链接",因此PHPStorm在供应商文件夹中找到了重复的代码.和我的包文件夹.同样,如果包含路径重复,或者路径配置为查找项目之外的代码(已经是项目的一部分),它也会找到多个定义.因此,排除供应商中的符号链接文件夹,允许PHPStorm仅查找源的一个副本到我的包,如果我的包包含他们自己的供应商文件夹,它们也将显示为重复的定义.删除包含路径列表中可能找到应用程序的任何内容

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有