今日、弟が私に尋ねました。PHP のインターフェイス クラスと抽象クラスの用途は何ですか? 彼はそれらの使用方法をまったく知らず、それらを使用することに意味がないと考えています。私も彼と同じ考えで、PHP を触っていたばかりの頃は「これは役に立たない」と感じていましたが、徐々に大きなシステムに触れるうちに、これらが実際に一定の効果があることに気づきました。以下に簡単にお話します。
実際、それらの役割は非常に単純です。多くの人が一緒にプロジェクトを開発する場合、全員が他の人が作成したいくつかのクラスを呼び出すことがあります。その場合、特定の関数の実装メソッドに名前を付けるにはどうすればよいのかと疑問に思うかもしれません。 php インターフェイス クラスが機能するとき、インターフェイス クラスを定義するとき、そのメソッドは
などの次のサブクラスによって実装される必要があります。 リーリーショップ インターフェイス クラスを宣言し、buy、sell、view の 3 つのメソッドを定義します。次に、このクラスを継承するすべてのサブクラスは、これらの 3 つのメソッドのいずれかを実装する必要があります。サブクラスがこれらの単語を実装していない場合、サブクラスは実行されません。実際、インターフェイス クラスは、端的に言えば、クラスのテンプレートであり、クラスの規則です。このカテゴリに属する場合は、どのような方法であっても、私の規則に従わなければなりません。それをどうするかはあなた次第です:
リーリー考えてみてください。複数の人が協力する大規模なプロジェクトでは、インターフェイス クラスがあると、特定の関数のメソッド名を他の人に尋ねる必要がなくなります。これは、仕方がありません。
結論: インターフェイス クラスはクラスのリーダーであり、方向を示し、サブクラスは指定されたメソッドを完了する必要があります。
実際、抽象クラスとインターフェイスクラスは部分的に似ています。この文は、抽象クラスがクラスに似ている部分を抽出しているように見えますが、実際には抽象クラスの関数についての真実を語っています。つまり、クラスの多くが繰り返し記述し続ける多くのメソッドを使用していることがわかった場合は、抽象クラスの使用を検討できます。「クラスを書き直すことはできず、各パブリック クラスには独自のパブリック クラスがあり、このパブリック クラスをインスタンス化するだけです。」クラスを作成し、同じメソッドを呼び出すことができます。実際、これは抽象クラスの動作ですが、インスタンス化のステップが省略され、このクラス メソッドを直接呼び出すことができるため、クラス メソッドも同様に便利で、オーバーロードすることもできます。この方法。例:
リーリー上記と同様に、store クラスを定義し、そのすべての部分、buy、sell、view を抽出し、これらのメソッドを抽象クラスに実装すると、それを継承するサブクラスがこれらのメソッドを自動的に取得します。そしてサブクラスは独自の処理を行い、コードの重複を導入し、再利用性を向上させます。
結論: 抽象クラスは、多くのサービスを備えたサービスプロバイダーのクラスです。サービスを提供しないことに不満がある場合は、それらを使用する必要はありません。
上記は、PHP インターフェイス クラスと抽象クラスに関する私の謙虚な意見であり、これら 2 つについて混乱している私の友人に役立つことを願っています。