向上拉成员,向下推成员
Pull Members Up重构允许您将类成员移动到父类。当您开始从类层次结构的底部添加功能然后意识到它也可以在更常见的情况下使用时,这可能会有所帮助(否则您的代码的某些部分可能会因父类而过时,但仍然适用于一个它的孩子)。通过Pull members up重构,您不再需要从一个类中手动复制方法或字段,将其粘贴到另一个类中并修复成员中的内部引用。
Push Members Down重构通过将类成员移动到子类来帮助清理类层次结构。然后,这些成员仅被重新定位到直接子类中。
拉起成员
选择要移动到父类的类。
在主菜单或上下文菜单上,选择“向上拉成员”对话框。
。将出现选择目标对象(父类)。
在成员部分中,选择要移动的成员。
单击重构以将选定的成员拉到其目的地。
例子
假设您有一个Car
扩展父类的类Vehicle
。让我们将printPassengers()
方法和$numOfPassengers
字段从Car
拉到Vehicle
。
将插入符号放在类中
Car
并选择 从上下文菜单中在打开的Pull Members Up 对话框
printPassengers()
中,选中和旁边的复选框$numOfPassengers
。PhpStorm 通知您的可见性$numOfPassengers
将从private更改为protected。单击重构。
重构后,类将如下所示:
将成员向下推
在编辑器中,打开需要下推其成员的类。
在主菜单或上下文菜单上,选择下推成员对话框显示要下推的成员列表。
。在要下推的成员区域中,选择要移动的成员。请注意,插入符号处的成员已被选中。
如果推送成员可能会导致问题,您将收到红色突出显示的通知。这意味着,如果情况无人看管,重构后会出现错误。PhpStorm 会通过“检测到问题”对话框提示您,您可以在其中选择忽略或修复问题。
预览并应用更改。
例子
假设您有一个Vehicle
类,一个Car
扩展的类Vehicle
和一个扩展的Truck
类Vehicle
。让我们将start()
方法从父类推Vehicle
送到其子类Car
,然后Truck
.
将插入符号放在
Car
类中并选择 从上下文菜单中在打开的Push Members Down 对话框中,选中旁边的复选框
start()
并单击Refactor。
重构后,类将如下所示: