Написание плагинов для PhpStorm-а для расширения автокомплита

Yoskaldyr

"Спамер"
Партнер клуба
Кто-нибудь писал плагины для PhpStorm-а?

Просто мне надо правильный автокомплит для имен классов созданных через class_alias (фактически тупая подмена одного нейм спейса на другой).
Идеально был бы плагин для резолвинга по каким-то правилам по аналогии с https://github.com/pbyrne84/DynamicReturnTypePlugin но он работает только с возвращаемыми значениями методов, а надо чтобы и сами имена алиасов классов резолвились везде.
 

Yoskaldyr

"Спамер"
Партнер клуба
@fixxxer, проблема в том что динамически весь префикс неймспейса подменяется на другой в автолоадере и это сторм не понимает. Т.е. не понимает когда на входе class_alias-а переменные а не простые строки.
 

Yoskaldyr

"Спамер"
Партнер клуба
ну или просто генерировать пачку иде-хинтов вида class Foo extends Namespace\Foo {}
это реально напрягает :(

https://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata
А здесь не совсем понятно как сделать не для возвращаемых методами значений, а например для new SomeClass.
Потому что для возвращаемых значений DynamicReturnTypePlugin и так прекрасно работает + более простое описание конфигурации
 

Yoskaldyr

"Спамер"
Партнер клуба
Основная проблема в том, что есть старая кодовая база со старым неймспейсом, но которая все еще поддерживается и модифицируется другими людьми (хоть и в очень вялом и ленивом темпе но все же изменяется).
Но весь наш новый код пишется с использованием нового неймспейса (главное чтобы в новом коде ссылок на старый неймспейс не было).
Подмена неймспейса через алиас прекрасно и быстро работает в автолоадере, но напрягает везде или писать пхпдоки или создавать пустые классы только для автокомплита, типа:
\NewNamespace\ClassName extends \OldNamespace\ClassName {}

А т.к. классов в старом коде много, то хочется какое-то более-менее автоматическое решение для IDE.

Для фабрик, DI-контейнеров, синглтонов и т.п. все решается или использованием Advanced Metadata или использованием плагина DynamicReturnTypePlugin.
 

Вурдалак

Продвинутый новичок
Что-то проблема изначально какая-то надуманная, зачем вводить жёсткое правило «главное чтобы в новом коде ссылок на старый неймспейс не было»? Если так не хочется завязываться на старый код, то можно адаптеры к старым реализациям писать. А просто алиасы — это иллюзия того, что вы на старый код не завязаны.

Но если очень хочется, то по идее можно тупо генерировать файл с class_alias() под все классы из старого неймспейса.
 

Yoskaldyr

"Спамер"
Партнер клуба
тупо генерировать файл с class_alias() под все классы из старого неймспейса
В принципе где-то так щас и делается, но каждый раз перегенерировать напрягает, хотелось сделать на стороне сторма автоматом. Значит буду костылить дальше.
 
Сверху