LoginSignup
2
0

More than 5 years have passed since last update.

PhpStormでディレクトリをrenameする時にnamespaceが追従しない場合の対応

Last updated at Posted at 2018-08-26

はじめに

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の両方で発生しているので、バグではなくそういう仕様なのかもしれません。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0