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
- In the editor, open the class whose members you need to push down.
- On the main menu or on the context menu, choose . Push Members Down dialog box displays the list of members to be pushed down.
- 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.
- 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;
}
}
start()
from the parent class Vehicle
to its child classes Car
and Truck
. - Place the caret inside the class
Car
and choose on the context menu. - 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
Procedures:
Reference:
Last modified: 19 July 2017