PhpStorm如何找到函数定义的用法?

时间:2017-05-18 15:12:33

标签: intellij-idea phpstorm phpstorm-2017.1

我遇到过很多这样的问题,但大多数建议的解决方案只是使缓存/重启无效或升级到最新版本。这些解决方案甚至不适用于所有情况(包括我的)。在大多数问题中,OP表示这不起作用,而其他人报告说他们可以毫无问题地做到这一点。我很清楚,这在很大程度上取决于每个人的配置/设置,必须有一些必要的东西才能使这个功能正常工作。

显然它对我不起作用,但不是发布一个关于如何解决我的特定情况的问题,我认为最好学习PhpStorm如何确定函数定义的用法。希望结果将是一个故障排除步骤列表,以检查此功能是否适用于“验证缓存/重新启动”以及升级到最新版本之外的人员。

我觉得我不知道这个功能如何找到用法,我们只剩下试验和错误,看看是什么让它起作用。如果我们知道A和B必须是真的才能使这个特征起作用,那么我们可以系统地确保A和B实际上是真的。

为清楚起见,问题是这个。我有一个方法ClassA::Method1()。我将ClassA撰写成其他类ClassBClassC - 每个类都使用ClassA::Method1()。我正在尝试转到ClassA的{​​{1}}中的方法定义,右键单击它,选择“查找用法”并期望它在类{{{}中向我报告每次使用它1}}和Method1(或碰巧使用它的任何其他人)。

PhpStorm如何确定用法?它是基于注释吗?命名空间?两者结合?或完全不同的东西?

1 个答案:

答案 0 :(得分:1)

我可能通过反复试验来解决这个问题。它似乎是通过命名空间/类型提示和PSR-4标准。但是,如果您对接口进行编程,那么PhpStorm似乎没有能力找到具体类方法的用法。特别是当具体类扩展抽象类并实现扩展抽象类实现的接口的接口时。我已经开发了一个要点(附有评论)来说明这一点。

https://gist.github.com/dlanz/484c1584b5cbe054b9402bde56afae81

简而言之,如果您要对接口进行编程,则必须使用" Find Usages"在界面上。如果接口扩展了另一个接口,并且您只想查找扩展接口的用法,但是对于它继承的方法 - 您要么运气不好,要么必须在扩展接口中重新定义接口方法。或者你永远不会扩展接口,但有时它是有意义的。