この動作は、現在のPHP 5.4の実装で可能である理由は何か良い理由がある場合、私は思ったんだけど:PHP 5.4:なぜ、クラスは異なるシグネチャでtraitメソッドをオーバーライドできますか?
trait T {
public function test(PDO $pdo) {}
}
class C {
use T;
public function test(DOMDocument $dom) {}
}
私はクラスの特性を利用しているという事実は、このクラスは特定していたことを保証することを考えました利用可能なインタフェース。しかしここで、誤って別の目的のためにtraitメソッドをオーバーライドすると、古典的な継承の場合と同様に、Strict Standardsの通知を受け取ることさえありません。
これは特に許可されていますか?何のために?
おかげで、それは確かにクラスがトレイトのメソッドをオーバーライドすることができますが、それは別の署名とそれをオーバーライドすることができる理由は言っていないと言うん! – Benjamin
私の投稿を更新しました。 – Eugene
私が知っているように、PHPの特性は、継承と同じ方法でメソッドをオーバーライドします。つまり、シグネチャチェックを行わず、メソッド名だけを意味します。 – Timur