是否可以在特征中输入提示$this?

Vin*_*ler 5 php phpdoc type-hinting

我有一个特征,想输入提示 $this 来通知编译器它的类型:

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

class OtherClass {
  public function __construct(MyAwesomeInterface $foo) { ... }
}
Run Code Online (Sandbox Code Playgroud)

所以我想知道是否有相当于的东西,例如:

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

这将使我能够通知编译器该特征的用户实现了我的接口。

请注意,特征无法在 PHP 中实现接口(请参阅为什么 PHP Trait 无法实现接口?)。

感谢您的任何帮助 ;-)

Vie*_*inh 0

没有警告,因为您欺骗了 IDE 参数已正确传递。事实上,运行时总是报错。

Trait 是为 PHP 中的任何类注入的相关函数块。它的目的是不用于 OOP。我认为这将对实用程序支持功能有所帮助。