PhpStorm 没有正确重构类?

标签 php phpstorm

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

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

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

所以,首先我右键单击该文件,转到重构 -> 重命名:

enter image description here

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

enter image description here

最后,单击“重构”后......什么也没有发生。文件名被更改,但项目中的其他内容都没有被重构。 PhpStorm 甚至不更改类名。

enter image description here

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

最佳答案

您已调用Refactor |重命名文件

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

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

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

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


您需要为 PHP 做的就是调用 Refactor |重命名实际的类而不是文件

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

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

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

一些链接:

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

关于PhpStorm 没有正确重构类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43957178/

相关文章:

laravel - 无法在 PhpStorm 10.0.3 上添加 Artisan 命令行工具

laravel - 如何让 IDE 识别 Laravel Routes 使用的方法? (PHPStorm)

php - 学说 : Set primary Key

php - 使用 PHP 将 Basename 应用于 CSS 类,但索引页面出错

php - 如何移动 mysql 数据库最简单和最快的方法?

php - PhpStorm + Docker + Xdebug + DB SSH隧道

php - 找不到类 'mysqli' PHP v5.6.7

php - 如何告诉 PhpStorm 定义了某个变量

php - MySQL - 1 个查询但返回两个数组?

php - Laravel 没有检测到我的本地(开发)数据库配置文件