$myObject
では、使用する前に実装されていることを確認するために型をチェックし、実装されMyInterface
ていない場合はエラーをスローする必要がありますか? それとも、これはただの手抜きですか?
わざわざインターフェースを作成し、オブジェクトを期待するものがそのインターフェースを実装することも期待している場合は、はい、絶対にチェックして文句を言う必要があります。
あなたのアプローチをダックタイピングと対比してください。批評のセクションでは、2 つの無関係な方法の間の混乱について述べています。Python* の代わりに PHP で動作するように、彼らの例を適応させます。
press()
メソッドを実装するクラスがアクションを実行することを期待する、Finger というクラスを簡単に作成できます。ただし、 Trousers というクラスもpress()
メソッドを実装する場合があります。Duck Typing では、奇妙で検出が困難なエラーを防ぐために、開発者はメソッドの潜在的な使用法をそれぞれ認識しておく必要がありますpress()
。たとえそれが自分が取り組んでいることと概念的に無関係であってもです。
ズボンを着用しようとするときにのみズボンを処理することが絶対に重要な場合press()
は、そのチェックを行う必要があります. press()
コードが ed を取得する限り、何が ed を取得するかを気にしない場合は、press()
チェックを破棄できます。
* 元の例では、プロパティとメソッドを使用しています。Python のプロパティとメソッドは同じ名前空間を共有します。プロパティをメソッドとして使用しようとするとさらに悲惨なことになりますが、PHP には当てはまりません。