Extract class
PhpStorm lets you use refactorings that extract class methods and properties into a new class. These refactorings are useful when a class has grown too large and "does too many things". In such cases, it may be a good idea to split the class into smaller, more cohesive classes. Additionally, you can extract functions defined in php files into new classes. This may be useful for grouping related functionality into utility classes, avoiding collisions for non-namespaced methods, or representing your codebase in an object-oriented manner.
Position the caret at a code fragment that you want to extract into a class. You can extract PHP class properties and methods as well as standalone functions.
From the main menu, select Extract Class.
or press Ctrl+Alt+Shift+T and in the popup menu, selectIn the dialog that opens, specify the target namespace and destination directory, the desired name of a new class, and the class members or standalone functions to extract. To generate accessor and mutator methods (getters and setters) for the fields of your classes, select the Generate accessors checkbox.
Preview your changes and click OK.
Extract Class example
In the following example, the bar
method is extracted from the Source
class to a new Target
class. During the refactoring, the following happens:
PhpStorm creates a new class
Target
and moves thebar
method's implementation into this class.An instance of the
Target
class is injected intoSource
via the constructor.To provide access to the private property
foo
, theget_foo
getter method is generated within theSource
class. This is achieved by enabling the Generate accessors option in the Extract To Class dialog.The
(new Source())->bar()
method call doesn't change, but the actual execution is now delegated to thebar
method of theTarget
class.