web-dev-qa-db-ja.com

PHPタイプヒント特性

私には特徴があります。創造性のために、この特性を特性と呼びましょう。

trait Trait{    
    static function treat($instance){    
        // treat that trait instance with care
    }
}

現在、この特性を使用するクラスUserもあります。 Userのインスタンスでtreatを呼び出そうとすると、すべてが機能します。しかし、次のように、Traitを使用するクラスのインスタンスのみを引数として指定する必要があることをタイプヒントしたいと思います。

static function treat(Trait $instance){...}

残念ながら、これにより、関数がTraitのインスタンスを予期しているが、Userのインスタンスが指定されたという致命的なエラーが発生します。このタイプの型ヒントは、継承と実装に完全に機能しますが、特性を型ヒントするにはどうすればよいですか?

27
arik

DaveRandomが言うようにあなたはできません。そして、あなたはすべきではありません。おそらく、その上にインターフェースとタイプヒントを実装したいと思うでしょう。次に、トレイトを使用してそのインターフェースを実装できます。

15
Veda