PhpStorm没有正确重构类?

时间:2017-05-13 19:26:19

标签: php phpstorm

在我使用的所有Java IDE中,重构/重命名都是轻而易举的,因为IntelliJ会扫描项目文件并为我重命名。

我目前正在使用一个项目,其中有数百个类的引用遍布数百个文件。我想重构它,以便将Compound类重命名为CompoundTag

因此,IDE(PhpStorm)应该将其更改为新的new Compound()而不是CompoundTag()

所以,首先我右键单击该文件,转到Refactor -> Rename

enter image description here

接下来,我重命名了它,并确保检查这些选项:

enter image description here

最后,点击重构后......没有任何反应。文件名被更改,但项目中没有其他内容被重构。 PhpStorm甚至没有更改类名。

enter image description here

如何解决此问题以使PhpStorm正确重构我的文件?

1 个答案:

答案 0 :(得分:2)

您已在文件上调用Refactor | Rename

你所做的是你重命名了一个文件......以及可能所有对文件的引用。但是在PHP中,世界类名称不一定必须与文件名相同..你可能会发现很多旧项目(特别是那些历史悠久的项目),你甚至可以在一个文件中看到多个类。 WordPress是一个流行的例子。当然,这些日子并不常见(感谢PSR),但仍然......

适用于Java(在IntelliJ中),因为:

  • 在那里更常见(已经存在了很长时间);
  • 这样的重命名(重命名文件=重命名类)是完全实现的。

对于PHP,此路径(重命名文件=重命名类)尚未实现。

您需要为PHP做什么...是在实际CLASS上调用Refactor | Rename而不是文件

重构操作在基于IDEA的IDE中依赖于上下文..因此,相同的操作将执行不同的操作,具体取决于您是在文件上调用它(例如在“项目视图”面板中)还是在插入符号下的某个元素上(在编辑器中)

这样的类重构可以做的不仅仅是这个类的重命名:

  • 可以重命名文件
  • 它可以重命名子类及其文件

一些链接:

P.S。类似于仅移动文件和更改命名空间的故事 - 在类/命名空间而不是文件上调用Refactor | Move