docs/manipulating_code/refactoring.md
Sometimes you want to make big changes to your codebase like moving methods or classes.
Psalm has a refactoring tool you can access with either vendor/bin/psalm-refactor or vendor/bin/psalm --refactor, followed by appropriate commands.
vendor/bin/psalm-refactor --move "Ns1\*" --into "Some\Other\Namespace"
This moves all classes in Ns1 (e.g. Ns1\Foo, Ns1\Baz) into the specified namespace. Files are moved as necessary.
vendor/bin/psalm-refactor --move "Ns1\Foo" --into "Ns2"
This tells Psalm to move class Ns1\Foo into the namespace Ns2, so any reference to Ns1\Foo becomes Ns2\Foo). Files are moved as necessary.
vendor/bin/psalm-refactor --rename "Ns1\Foo" --to "Ns2\Bar\Baz"
This tells Psalm to move class Ns1\Foo into the namespace Ns2\Bar and rename it to Baz, so any reference to Ns1\Foo becomes Ns2\Bar\Baz). Files are moved as necessary.
vendor/bin/psalm-refactor --move "Ns1\Foo::bar" --into "Ns2\Baz"
This tells Psalm to move a method named bar inside Ns1\Foo into the class Ns2\Baz, so any reference to Ns1\Foo::bar becomes Ns2\Baz::bar). Psalm currently allows you to move static methods between arbitrary classes, and instance methods into child classes of that instance.
vendor/bin/psalm-refactor --rename "Ns1\Foo::bar" --to "Ns2\Baz::bat"
This tells Psalm to move method Ns1\Foo::bar into the class Ns2\Baz and rename it to bat, so any reference to Ns1\Foo::bar becomes Ns2\Baz::bat).