AlexPTS
@AlexPTS
Full stack веб разработчик

Подсветка кода с использованием trait в php

Многие IDE подсвечивают код и предлагают варианты авто подстановки на основании phpdoc документации.

При использовании trait в php, заранее описать какой тип вернет метод или какой тип хранит свойство не всегда возможно.


Например:

trait T_Singleton {




    /**
     * Вернуть единственный экземпляр класса
     * 
     * @return
     */
    static public function getInstance() {
        ...
    }


}


При использовании данной примеси заранее не известно из какого класса будет вызвана примесь и какой тип объекта она должна вернуть. Можно конечно попробовать явно в каждом классе переопределить попробовать и описать верно тип, но это лишний код.

Вопрос: можно ли PhpStorm заставить понимать тип $instance как тип того же класса из которого будет вызываться? Может есть какое-то ключевое слово, которое бы понималось при динамической подсветки кода как имя текущего класса откуда происходит вызов?

— UPD: Решение
Поискав еще, нашел решение через использование phpDOC директив у класса, где описываем метод, фактически которого нет в классе, но подсветка на его основе как раз нормально работает

Добавляем перед классом комментарий с методом и типом возвращаемых данных
/**
 * @static @method Template_View getInstance()
 */
class Template_View {
    trait T_Singleton;
    ...
}
  • Вопрос задан
  • 4759 просмотров
Пригласить эксперта
Ответы на вопрос 1
nazarpc
@nazarpc
Open Source enthusiast
Это баг, я недавно тоже такое заметил, создал issue в трекере PhpStorm, просьба проголосовать за для ускорения исправления:
youtrack.jetbrains.com/issue/WI-19305
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы