PhpStormのヘルプを見て、Refactor -> MoveとかしてみたもののNamespaceが追従しなかった者たちへ捧ぐ。
やりたいこと
Laravelでnamespaceがapp\
がApp\
になってる状態でクラスのnamespace
を変えたい。
公式ヘルプではRefactor->Move...をしたりすると変わるらしいが、なぜかそうなってくれない。
やること
Directoriesでapp
をApp
として扱わせる
Preferencesを開いて、Directories。
そこからSouceRouteとしてapp
ディレクトリをマークする。
マークした後にそのディレクトリのPackage PrefixとしてApp
を割り付ける。
右にマークされているディレクトリ一覧が並んでいるので、そこにapp
ディレクトリのパスが並んでいるとき、鉛筆マークが出ているのでそいつをクリックしてPackage Prefixを編集する。
移動したいクラスファイルを開いて、クラス名にカーソルをあわせF6キーを押す
移動先のNamespaceを指定してやるとファイルをそのディレクトリへ移動し、自身のNamespaceを変更し、さらには依存関係のuse句も変更してくれる。
クラス名でなくとも、namespaceにカーソルをあわせてF6を押しても、そのnamespaceのクラスとかすべてが変更されます。活用されたし。
composer dump-autoload
autoloadのファイルを更新するのも忘れずに。
Shift + F6はクラス名の変更だとばっかり思ってて、F6単発でクラスの移動になるとは思わなんだ...