我有一个特质。为了创造力,让我们称之为特质Trait:
trait Trait{
static function treat($instance){
// treat that trait instance with care
}
}
现在,我还有一个使用此特性的类User。当尝试使用User实例调用treat时,一切正常。但我想输入提示,只有使用Trait的类的实例应该作为参数给出,如:
static function treat(Trait $instance){...}
但是,遗憾的是,这会导致致命的错误,该错误表明函数期待Trait的实例,但是给出了User的实例。这种类型的提示非常适用于继承和实现,但是如何键入提示特征呢?
答案 0 :(得分:15)
你不能像DaveRandom所说的那样。你不应该。您可能希望在其上实现接口和typehint。然后,您可以使用特征实现该接口。
答案 1 :(得分:2)
对于将来到这里来的人们,我想详细说明一下Veda的答案。
总结;您的想法不是疯狂的想法!实际上,将特质视为单词的常识是有意义的,其他语言也可以做到。由于某些原因,PHP似乎卡在了接口和特征之间。
答案 2 :(得分:0)
如果您想在trait或使用trait的类中创建函数,可以将self
用作类型提示,以便您的函数看起来像这样。
static function treat(self $instance){...}