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? Если я неправ, то как мне ублажить последнего?
  • Вопрос задан
  • 1058 просмотров
Решения вопроса 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 не рассчитана на подобный говнокод
Ответ написан
Ваш ответ на вопрос

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

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