PhpStormでディレクトリをrenameする時にnamespaceが追従しない場合の対応
はじめに
PhpStormでディレクトリをRefactor/Renameする際に、基本的にはnamespaceも一緒に変更されるはずなのですが、上手くいかない時があります。
発生環境
Windows10 Pro
PhpStorm 2018.2
Windows8
PhpStorm 2017.2
現象
namespaceを追従して変更出来る場合、下記のようなダイアログが表示されます。
ところが、ある条件を満たすと下記のようにnamespaceが追従しない状態となります。
原因?
Rename対象ディレクトリ配下に、PHPファイルが含まれていない(namespaceがソース上に存在しない状態になる?)と発生するようです。
例として、下記のディレクトリ構成でFoo
をRenameするとnamespaceを認識してくれますが、
App\
Foo\
FooClass.php (namespace = App\Foo)
Bar\
BarClass.php (namespace = App\Foo\Bar)
上記からFooClass.phpを削除して下記の構成でFoo
をRenameするとnamespaceを認識してくれませんでした。
App\
Foo\
Bar\
BarClass.php (namespace = App\Foo\Bar)
なお、指定したディレクトリの子ディレクトリに関してはPHPファイルが存在しない(namespaceの定義が無い)状態でも問題無いようです。
App\
Foo\
FooClass.php (namespace = App\Foo)
Bar\
BarClass.php (namespace = App\Foo\Bar)
Hoge\
Fuga\
FugaClass.php (namespace = App\Foo\Hoge\Fuga)
対応方法
Rename対象ディレクトリに一時的にダミークラスを作ってRename後に削除することで対応可能でした。
2017.2及び、2018.2の両方で発生しているので、バグではなくそういう仕様なのかもしれません。
Author And Source
この問題について(PhpStormでディレクトリをrenameする時にnamespaceが追従しない場合の対応), 我々は、より多くの情報をここで見つけました https://qiita.com/FrozenVoice/items/17e9ddec35b1e13ba4c3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .