Make Method Static
The Make Method Static refactoring converts an instance method to a static one and automatically corrects all calls, implementations and overridings of the method.
Performing the Refactoring
- Select the method to be refactored in the Structure view, or right-click the method name in the editor. On the main menu, or on the context menu of the selection, choose . If your method does not need any parameters, nor rely on accessing properties or methods of this object, you will get the static method made silently, without displaying any dialog boxes: For more complicated cases, the Make Method Static dialog box opens.
class MyClass { private function getFormattedDate() { $format = getSettings()['dateFormat']; return time($format); } }
class MyClass { static private function getFormattedDate() { $format = getSettings()[ 'dateFormat' ]; return time( $format ); } }
- If you currently use the existing object via
this
, select the Add object as a parameter with name checkbox to pass in an instance of the object via a parameter. In the text box below, specify the name of the parameter to be generated. After the refactoring, the new parameter will be documented in the PHPDoc block.class MyClass { private function getFormattedDate() { $format = $this->getSettings()['dateFormat']; return time($format); } }
class MyClass { /** * @param MyClass $instance * @return */ static private function getFormattedDate($instance) { $format = $instance->getSettings()['dateFormat']; return time($format); } }
- If you access the properties of the class, use the Add parameters for fields area to pass the value of the property as a parameter instead of accessing the object inside the newly created static method.
- Select the Add parameters for fields checkbox.
- In the Parameters list, which shows all the possibly suggested parameters, select the checkboxes next to the ones that you want to pass the values in.
class MyClass { private function getFormattedDate() { $format = $this->timeFormat; return time($format); } }
class MyClass { /** * @param $timeFormat * @return int; */ static private function getFormattedDate($timeFormat) { $format = timeFormat; return time($format); } }
- To preview the results, click Preview and examine the reuslt of the refactoring in the Find tool window. Apply the changes, if no issues arizs.
Last modified: 29 March 2018