mitaichik
@mitaichik

Phpdoc: Как указать к какому классу будет цепляться трейт?

Всем привет!

У нас в проекте есть трейты, которые цепляются только к потомку определенных классов. Например AccessControllerTrait, который цепляется к потомку класса Controller.

В этом трейте мы используем методы из Controller. Но, так как трейту нельзя указать класс с которым он будет пользоваться, все методы Controller, которые юзаются в трейте, phpStorm помечает как неизвестные, автокомплит не работает, и т.п.

Можно, конечно, в AccessControllerTrait в phpdoc задекларировать методы из Controller с помощью @ method, но это придется делать в каждом терйте - это не вариант.

Есть ли способ легко и быстро сказать трейту, у кого он будет юзаться?
  • Вопрос задан
  • 678 просмотров
Решения вопроса 1
mitaichik
@mitaichik Автор вопроса
В общем, покапавшись, выяснилось что в phpStorm для этого есть специальная аннотация @mixin.

Так же с помощью этой аннотации можно помечать и кастомные примеси, например, поведения в Yii
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
27cm
@27cm
TODO: Написать статус
В трейты можно добавлять абстрактные методы, но это всего лишь более правильная альтернатива для "в phpdoc задекларировать методы из Controller с помощью @method". Все абстрактные методы можно вынести в отдельный трейт, который уже подключать в других трейтах. Но такая архитектура будет попахивать.

Есть ли способ легко и быстро сказать трейту, у кого он будет юзаться?

Нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы