私の知る限り、Laravel は拡張するインターフェースをコントラクトと呼んでいます。これは、Laravel が使用するためです。しかし、これは少し循環論法のように思えます。プロジェクトで使用しているという理由だけで、既存の PHP 機能の用語を変更しても、付加価値はありません。
他に何かあるのでしょうか? 標準の PHP 機能に新しい用語を付ける理由は何でしょうか? あるいは、インターフェイスにまだ含まれていないコントラクトの機能があるのでしょうか?
編集: 明確にするために、私が混乱しているのは、ドキュメント内での「契約」という固有名詞の使用法です。トーマスの投稿
ベストアンサー1
「契約」はテイラーが作った新しい用語ではありません。プログラマーがよく使う用語です。
インターフェースは契約ですが、契約は必ずしもインターフェースである必要はありません。簡単に言えば、インターフェースはクラスが実装しなければならない契約を定義します。
抽象クラスも契約です。違いは、抽象クラスは実際の実装や状態などを提供できるため、ある意味ではより厳密な契約であるということです。
もう 1 つの重要な違いは、子クラスは 1 つの抽象クラスのみを拡張できますが、複数のインターフェースを実装できることです。
つまり、「契約」は新しい命名規則ではありません。テイラーが使用している一般的な用語です。