私は、PHPインターフェイスがどのように動作し、どのように「使用するか」を知っていると言って始めます。PHPインターフェイス:実際にどのように使用できますか?
私の質問はむしろです。実際のアプリケーションではどのように役立つのでしょうか?
私は今3年以上PHPを書いており、にはインタフェースとしてが必要だと感じたことはありません。私は、特定の目的よりも優れた実践のために、より多くのインターフェースを作成しています。
私は、PHPインターフェイスがどのように動作し、どのように「使用するか」を知っていると言って始めます。PHPインターフェイス:実際にどのように使用できますか?
私の質問はむしろです。実際のアプリケーションではどのように役立つのでしょうか?
私は今3年以上PHPを書いており、にはインタフェースとしてが必要だと感じたことはありません。私は、特定の目的よりも優れた実践のために、より多くのインターフェースを作成しています。
私は実際に自分の経験でインターフェイスを使用した例を示します。
インターフェイスは、プラグインアーキテクチャのようなものを定義する必要がある場合に非常に便利です。アプリケーションが認証プラグインを受け入れ、エンドユーザの実装者が独自の内部認証インフラストラクチャ(LDAP、Shibboleth、カスタム認証データベースなど)と統合できるようにするとします。適合するようにするプラグインのためには、次のメソッドを実装しなければならない:インタフェースで定義されている場合
validate_user()
start_user_session()
logout_user()
get_user_details()
を、クラスは、次いで、必要なメソッドは、プラグイン・アーキテクチャとの互換性のために存在していることを確実にインタフェースを実装します。
残念ながら、PHPはインターフェイスメソッドの戻り値の型を強制しません。したがって、メソッドの期待される戻り値機能を文書化するだけで十分です。
まだ有用ではありません。彼らの主な目的はタイプヒントのようだ。同じインターフェイスを実装する2つの別々のクラスを記述するときは、そのインターフェイスを関数の型ヒントで使用できます。そうすれば、パラメータで渡されたオブジェクトで、そのインタフェースのすべてのメソッドを使用できることがわかります。
残念ながら、PHPは実際にそのパラメータで呼び出されるメソッドやプロパティが実際にそのインターフェイスにあるかどうかをチェックしないため、インターフェイスで使用できないオブジェクトプロパティを誤って使用する可能性があります。異なる型のオブジェクトが渡されます。
このような状況では、他の言語の方がはるかに厳しいため、インターフェイスで宣言されている機能のみを使用することができます。
しかし、PHPでもこの目的のために便利です。将来のバージョンではこれらのチェックが厳しくなるため、エラーが発生しにくくなります。
標準PHPライブラリ(SPL)をチェックしてください http://php.net/manual/en/book.spl.php
可算とRecursiveIteratorはあなたの手掛かりを与えるかもしれません。
PHPに厳密な型チェックがなく、フォームダックの型指定を使用すると、私は同意します。私はインターフェイスを使用すると、あなたのコードを理解するのに役立つと思います。 –
@Micheal Mior:PHPは型ヒントを知っています: 'function foo(BarClass $ x){echo $ x-> hello; } ' – KingCrunch
@KingCrunchそれはありますが、それは愚かな証拠ではありません。 – GolezTrol