lamo4ok
@lamo4ok
Программист

Как при помощи phpDoc описать сразу два варианта метода, перегруженных через __call и __callStatic?

В классе есть два магических метода __call и callStatic, с помощью которых перегружается условный метод read(). В случае обращения к данному методу как к статическому, ему передается id сущности для чтения. В случае обращения к нему, как к методу экземпляра класса, ему ничего не передается, id берется из свойства экземпляра.

В обоих случаях возвращается один и тот же либо вновь созданный, либо уже существующий экземпляр класса. Перед классом я пробую записать вот так вот оба варианта метода, статический и нет:

/**
 * Class Entity
 *
 * @package MyCompany\Contracts
 *
 * @property array  $data
 * @property int    $id
 * @property string $name
 *
 * @method Entity read()
 * @method static Entity read( $id )
 */


Но PhpStorm 2019.1 ругается на такую запись вот так:

Method with same name already defined in this class
Another definition with same name exists in this file


Кто прав, я или PhpStorm? Если я неправ, то как мне ублажить последнего?
  • Вопрос задан
  • 989 просмотров
Решения вопроса 1
Minifets
@Minifets
Hello world!!!
Нет, такое поведение в IDE не заложенно, и подсказать ей никак нельзя.

Если вы попытаетесь внутри класса объявить 2 метода - с одинковым именем, то получите точно такую же ошибку. Method with same name already defined in this class. Собственно это и есть ожидаемое поведение, когда вы описываете методы в phpDoc.

class Test {

    public function test() {
    }

    public static function test() {
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
ide не рассчитана на подобный говнокод
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽