PhpStorm 2016.3 Help

Push Members Down

The Push Members Down refactoring helps clean up the class hierarchy by moving class members to a subclass. The members are then relocated into the direct subclasses only.

Pushing members down

  1. In the editor, open the class whose members you need to push down.
  2. On the main menu or on the context menu, choose Refactor | Push Members Down. Push Members Down dialog box displays the list of members to be pushed down.
  3. In the Members to be pushed down area, select the members you want to move. Note that the member at caret is already selected.

    If pushing a member might cause problems, you will be notified with red highlighting. It means that, if the situation is unattended, an error will emerge after refactoring. PhpStorm prompts you with a Problems Detected dialog, where you can opt to ignore or fix the problem.

  4. Preview and apply changes.

PHP example

Suppose you have a class Vehicle, a class Car that extends Vehicle, and a class Truck that lso extends Vehicle:

abstract class Vehicle { protected $code; public $name; protected function start() { echo "Let's start!"; } public function printName() { echo "Name = " . $this->name; } } class Car extends Vehicle { protected $weight; function __construct($weight) { $this->weight = $weight; } } class Truck extends Vehicle { protected $length; function __construct($length) { $this->length = $length; } }
Let's push the method start() from the parent class Vehicle to its child classes Car and Truck.

  1. Place the caret inside the class Car and choose Refactor } Push Members Down... on the context menu.
  2. In the Push Members down Dialog that opens, select the check box next to start() and click Refactor. After the refactoring your classes will look as follows:
    abstract class Vehicle { protected $code; public $name; public function printName() { echo "Name = " . $this->name; } } class Car extends Vehicle { protected $weight; function __construct($weight) { $this->weight = $weight; } protected function start() { echo "Let's start!"; } } class Truck extends Vehicle { protected $length; function __construct($length) { $this->length = $length; } protected function start() { echo "Let's start!"; } }

See Also

Last modified: 1 December 2016