我有一个特征。为了创造力,我们称这个特征为“Trait”:
trait Trait{
static function treat($instance){
// treat that trait instance with care
}
}
现在,我有一个使用这个特性的类 User。当尝试使用 User 的实例调用 treat 时,一切正常。但我想要类型提示,仅应将使用 Trait 的类的实例作为参数给出,如下所示:
现在,我也有一个使用这个特性的类 User。当尝试使用 User 的实例调用 treat 时,一切都正常。但我希望进行类型提示,以便只能将使用 Trait 的类的实例作为参数传递,例如:
static function treat(Trait $instance){...}
可悲的是,这导致一个致命错误,提示该函数期望一个Trait实例,但提供了一个User实例。这种类型提示对于继承和实现非常有效,但如何为Trait进行类型提示呢?
use
语句来实现 traits,因为它们不是被实例化的。 - phpisuber01wtf
,请参见 http://eval.in/5936。如果它不会被视为类,为什么会出现“Fatal error: Cannot redeclare class Hello”的错误? - Baba