Можно ли напечатать hint $ this в чертах? - PullRequest
0 голосов
/ 02 мая 2020

У меня есть черта, и я хотел бы напечатать подсказку $ this, чтобы сообщить компилятору о его типе:

trait MyTrait {
  public function myAwesomeFunction() {
    return new OtherClass($this); // warning: Expected MyAwesomeInterface, got MyTrait
  }
}

class OtherClass {
  public function __construct(MyAwesomeInterface $foo) { ... }
}

Поэтому мне интересно, есть ли что-то эквивалентное, например:

trait MyTrait {
  public function myAwesomeFunction() {
    /**
     *  @var $this MyAwesomeInterface
     */
    return new OtherClass($this); // no warnings
  }
}

Это позволило бы мне сообщить компилятору, что пользователи черты реализуют мой интерфейс.

Обратите внимание, что черта не может реализовать интерфейс в PHP (см. Почему PHP Черта может ' t реализовать интерфейсы? ).

Спасибо за любую помощь; -)

1 Ответ

0 голосов
/ 03 мая 2020

Нет предупреждения, потому что вы обманули IDE параметр передается правильно. На самом деле, при запуске всегда выдается ошибка.

Черта - это порции соответствующих функций, введенных для любого класса в PHP. Цель не используется для OOP. Я думаю, что это поможет функциям поддержки утилит.

...