36

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

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

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

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

残念なことに、これは、関数が Trait のインスタンスを予期していたのに User のインスタンスが与えられたという致命的なエラーを引き起こします。この種の型ヒントは継承と実装で完璧に機能しますが、どのようにトレイトを型ヒントするのでしょうか?

4

4 に答える 4

19

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

于 2013-01-04T13:10:56.737 に答える