PhpStorm 2021.3 Help

向上拉成员,向下推成员

Pull Members Up重构允许您将类成员移动到父类。当您开始从类层次结构的底部添加功能然后意识到它也可以在更常见的情况下使用时,这可能会有所帮助(否则您的代码的某些部分可能会因父类而过时,但仍然适用于一个它的孩子)。通过Pull members up重构,您不再需要从一个类中手动复制方法或字段,将其粘贴到另一个类中并修复成员中的内部引用。

Push Members Down重构通过将类成员移动到子类来帮助清理类层次结构。然后,这些成员仅被重新定位到直接子类中。

拉起成员

  1. 选择要移动到父类的类。

  2. 在主菜单或上下文菜单上,选择Refactor | 拉起成员。将出现“向上拉成员”对话框。

  3. 选择目标对象(父类)。

  4. 成员部分中,选择要移动的成员。

  5. 单击重构以将选定的成员拉到其目的地。

例子

假设您有一个Car扩展父类的类Vehicle。让我们将printPassengers()方法和$numOfPassengers字段从Car拉到Vehicle

  1. 将插入符号放在类中Car并选择Refactor | 从上下文菜单中拉出成员...。

  2. 在打开的Pull Members Up 对话框printPassengers()中,选中和旁边的复选框$numOfPassengers。PhpStorm 通知您的可见性$numOfPassengers将从private更改为protected

    ps_pull_members_dialog_php_example.png
  3. 单击重构

重构后,类将如下所示:

抽象类车辆{}类汽车扩展车辆{受保护的$重量;私人 $numOfPassengers; 函数 __construct($weight,$numOfPassengers) { $this->weight = $weight; $this->numOfPassengers = $numOfPassengers; } 受保护的函数 printWeight() { echo 'Weight = ' 。$这个->重量;} 受保护的函数 printPassengers() { echo '乘客人数 = ' 。$this->numOfPassengers; } }
抽象类车辆 { 保护 $numOfPassengers; protected function printPassengers() { echo '乘客人数 = ' . $this->numOfPassengers; } } 类汽车扩展车辆 { 保护 $weight; 函数 __construct($weight,$numOfPassengers) { $this->weight = $weight; $this->numOfPassengers = $numOfPassengers; } 受保护的函数 printWeight() { echo 'Weight = ' 。$这个->重量;} }

将成员向下推

  1. 在编辑器中,打开需要下推其成员的类。

  2. 在主菜单或上下文菜单上,选择Refactor | 将成员向下推下推成员对话框显示要下推的成员列表。

  3. 要下推的成员区域中,选择要移动的成员。请注意,插入符号处的成员已被选中。

    如果推送成员可能会导致问题,您将收到红色突出显示的通知。这意味着,如果情况无人看管,重构后会出现错误。PhpStorm 会通过“检测到问题”对话框提示您,您可以在其中选择忽略或修复问题。

  4. 预览并应用更改。

例子

假设您有一个Vehicle类,一个Car扩展的类Vehicle和一个扩展的TruckVehicle。让我们将start()方法从父类推Vehicle送到其子类Car,然后Truck.

  1. 将插入符号放在Car类中并选择Refactor | 从上下文菜单中向下推成员。

  2. 在打开的Push Members Down 对话框中,选中旁边的复选框start()并单击Refactor

    ps_pull_members_dialog_php_example.png

重构后,类将如下所示:

抽象类车辆{受保护的$代码;公共$名称;protected function start() { echo "让我们开始吧!"; } } 类汽车扩展车辆 { 保护 $weight; 函数 __construct($weight) { $this->weight = $weight; } } 类卡车扩展车辆 { 保护 $length; 函数 __construct($length) { $this->length = $length; } }
抽象类车辆{受保护的$代码;公共$名称;} class Car 扩展 Vehicle { protected $weight; 函数 __construct($weight) { $this->weight = $weight; } protected function start() { echo "让我们开始吧!"; } } 类卡车扩展车辆 { 保护 $length; 函数 __construct($length) { $this->length = $length; } protected function start() { echo "让我们开始吧!";
最后修改:2021 年 11 月 16 日