私はphpで働いていますが、インターフェースの概念はここでは少し役に立たないようです。読んでみると、インターフェースは「契約による設計」の一部であることがわかりますが、少なくとも特定の種類の型の戻りを保証することなく、実際には契約はありません。「私たちは次のことを行うことに同意します:」という契約書のように思えます -- 契約条件はありません。
オブジェクトがメソッドを持っていることを保証したい場合、インターフェイスが特に役立つとは思えません。オブジェクトにないメソッドを呼び出そうとすると、致命的なエラーが発生するため、そのクラスにはその名前のメソッドがないことがすぐにわかります。スマートになりたい場合は、クラスにメソッドがあるかどうかを事前に確認してから、インターフェイスを確認し、オブジェクトがそのインターフェイスを実装しているかどうかを確認しても、そのオブジェクトを直接確認するよりも時間を節約できないようです (私ならそうします)。とにかく、実装したかどうかに関係なく、クラスにそのメソッドがあるかどうかを確認します)。
つまり、特定の名前を持つ一連のメソッドを持っているからといって、特定の動作が保証されるわけではありません。特定の型の変数が返されることが保証されている場合、少なくとも出力がどうなるかについてある程度の理解があり、そのインターフェイスでオブジェクトを使用するコードを書くことができます。それの。文字列が返された場合、少なくとも後で文字列出力を処理しているという確信を持ってコーディングを続けることができます。したがって、戻り値の型が指定されている場合、少なくともいくつかの動作が保証されます。動作を保証することは、インターフェースの目的の一部ですか、それともありませんか?
私が考えることができる唯一のことは、コードを書いているとき、後でそのクラスを書くときに特定のメソッドを確実に作成するための付箋として役立つということです。コードを書いているときの足場のように思えます。実際に使ってみるとあまりメリットがありません。したがって、クラスを作成するときよりも、クラスを作成するときに標準を維持することが重要です。この利点は、契約による設計の概念に実際には反映されていないようです。
PHP のような動的/型指定の緩い言語でインターフェースを使用することで、実際にどのような利点が得られますか? それらは素晴らしいものですか、それともより堅牢な OO 言語が実装するものなので、PHP も実装しますか?