在我使用过的所有 Java IDE 中,重构/重命名都是轻而易举的事情,因为 IntelliJ 会扫描项目文件并为我重命名所有内容。
我目前正在使用一个项目,其中有数百个对分布在数百个文件中的类的引用。我想重构它,以便将我的 Compound
类重命名为 CompoundTag
。
因此,IDE (PhpStorm) 应该将其更改为 new CompoundTag()
,而不是 newcompound()
。
所以,首先我右键单击该文件,转到重构 -> 重命名
:
接下来,我将其重命名并确保检查这些选项:
最后,单击“重构”后......什么也没有发生。文件名被更改,但项目中的其他内容都没有被重构。 PhpStorm 甚至不更改类名。
如何修复此问题以使 PhpStorm 正确重构我的文件?
最佳答案
您已调用Refactor |重命名文件
。
您所做的是重命名了一个文件......并且可能重命名了对文件的所有引用。但在 PHP 中,世界类名不一定必须与文件名相同..并且您可能会发现很多较旧的项目(尤其是那些历史悠久的项目),您甚至可能在单个文件中看到多个类。 WordPress 是最流行的例子之一。当然,现在这已经不常见了(感谢 PSR),但仍然......
它适用于 Java(在 IntelliJ 中),因为:
- 那里更常见(已经存在很长时间了);
- 这样的重命名(重命名文件 = 重命名类)已完全实现。
对于 PHP,此路径(重命名文件 = 重命名类)尚未实现。
您需要为 PHP 做的就是调用 Refactor |重命名
实际的类而不是文件。
重构操作在基于 IDEA 的 IDE 中是依赖于上下文的。因此,相同的操作将执行不同的操作,具体取决于您是在文件上(例如在“项目 View ”面板中)还是在插入符号下的某些元素上(在编辑器中)调用它.
这样的类重构可以做的不仅仅是这个类重命名:
- 它可以重命名文件
- 它可以重命名子类及其文件
一些链接:
- https://www.jetbrains.com/help/phpstorm/2017.1/rename-refactorings.html
- https://confluence.jetbrains.com/display/PhpStorm/PHP+Code+Refactorings+in+PhpStorm
P.S. 类似的故事,只是移动文件和更改命名空间 - 调用 Refactor |在类/命名空间上移动
,而不是在文件上移动。
关于PhpStorm 没有正确重构类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43957178/