PhpStorm에서 디렉토리를 rename 할 때 namespace가 추종하지 않는 경우의 대응
1706 단어 PhpStorm
소개
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 모두에서 발생하고 있기 때문에 버그가 아니라 그러한 사양일지도 모릅니다.
Reference
이 문제에 관하여(PhpStorm에서 디렉토리를 rename 할 때 namespace가 추종하지 않는 경우의 대응), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/FrozenVoice/items/17e9ddec35b1e13ba4c3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
App\
Foo\
FooClass.php (namespace = App\Foo)
Bar\
BarClass.php (namespace = App\Foo\Bar)
App\
Foo\
Bar\
BarClass.php (namespace = App\Foo\Bar)
App\
Foo\
FooClass.php (namespace = App\Foo)
Bar\
BarClass.php (namespace = App\Foo\Bar)
Hoge\
Fuga\
FugaClass.php (namespace = App\Foo\Hoge\Fuga)
Reference
이 문제에 관하여(PhpStorm에서 디렉토리를 rename 할 때 namespace가 추종하지 않는 경우의 대응), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/FrozenVoice/items/17e9ddec35b1e13ba4c3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)