我有一个trait,我想输入hint $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
}
}
这样我就可以告诉编译器这个trait的用户实现了我的接口。
请注意,在PHP中,一个trait不能实现一个接口(参见 为什么PHP Trait不能实现接口?).
谢谢你的帮助;-)
没有警告,因为你欺骗了IDE的param是正确传递的。事实上,当运行时,它总是抛出错误。
Trait是为PHP中的任何类注入相关函数的块。它的目的是不用于OOP。我认为它将有助于实用工具的支持功能。