3

私は今半年PHPをプログラミングしていますが、私は3ヶ月間オブジェクト指向です。 しかし、私はAbstractedクラスやInterface

私の仲間のひとりが説明しましたが、Javaでは:

あるクラスに構造体を与えたい場合は、インタフェースをEntityとして実装するように、すべての基底クラスはインタフェースからメソッドを継承し、それに本体を与える必要があります。

しかし、私はPHPでまだ理解していません。私はインターフェイスを使用するための瞬間を見つけることができません。

人々はいつInterfacesが有用であるのでしょうか?それらは有用ですか?あるいは私は彼らなしで暮らすことができますか? あなたは私に、瞬間の完璧な例を示すことができますか?インタフェース

私はドキュメンテーションを読みましたが、理解していませんでした。

もう一つの質問:

私はインターフェイスのために別のファイルを使用する場合、たとえば:

Body.interface.php

特定のクラスでそのインタフェースを使用するには、include()を使用する必要がありますか?


3 답변


1

インターフェースは、あなたのクラスのための一連の指示です。インターフェイスを実装する場合、継承するクラスはインターフェイスによって定義されたルールに従わなければなりません。

インターフェースには、継承したクラスが持たなければならないすべてのメソッドとプロパティ、それらの引数、型、およびPHPドキュメントのリストが含まれています。それらは、親クラスを拡張している開発者向けの一連の指示と、拡張クラスのための一連のルールを提供するという2つの重要な目的を果たします。

使用するための素晴らしいシナリオは、将来他のクラスによってアクセスまたは拡張されるクラスを作成する場合です。私の場合は、Restful APIやSOAP APIなどのAPIを作成するときにInterfacesを頻繁に使用します。ベースクラスは具体的であり、いくつかの重要な必須ツールを含んでいるので、インターフェースは他の開発者に親クラスとやりとりする方法を伝えます。

インタフェースの有効な使用

interface MyInterface {
    /**
     * This method is required in your inheriting class
     * @var \stdClass $MyRequiredParameter - A object of options
     */
    public function myRequiredMethod(stdClass $MyRequiredParameter);
}

class MyClass implements MyInterface {
    public function myRequiredMethod(\stdClass $MyRequiredParameter)
    {
        return $MyRequiredParameter->MyValue;
    }
}

class MyExtension extends MyClass implements MyInterface {
    public function myRequiredMethod(\stdClass $MyRequiredParameter)
    {
        return $MyRequiredParameter->MyOtherValue;
    }
}

インタフェースされたクラスの無効な拡張の例

class MyBadExtension implements MyInterface {
    public function weDontNeedNoStinkingRequiredMethods()
    {
        return FALSE;
    }
}

インターフェイスのパターンに従わなかったため、致命的な例外が発生します。

Fatal error: Class MyBadExtension contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (MyInterface::myRequiredMethod)


  • だから基本的にインターフェイスのポイントは、クラスのためのルールが設定されていますか?だから、1つのパラメータでmyRequiredMethodという名前のpublic関数を1つしか使用できません。私の仲間のように、クラスのボディだけが説明されていますか? - Jony Kale
  • インタフェースメソッドは常にpublicでなければなりません。プロテクトされたメソッドとプライベートメソッドは、クラスの内部からしかアクセスできないため、'インターフェースではありません。 - phpisuber01

0

インターフェイスは、クラス継承ツリーに収まらないが特定のメソッド呼び出しを使用して使用できるような動作を指定するのに役立つように設計されています。それを能力と考えてください。

あなたが何かを数えることができれば、それは数えられ、あなたは数えられるインタフェース。そして、それらのもののいくつかもソートすることができます、彼らはソート可能です。そのために独自のインターフェースを定義し、ソートの昇順と降順の両方のメソッドを強制することができます。

インターフェイスには、そのメソッドの実装がありません。実装するクラスで強制的に行う必要があります。

クラスをインクルードするのと同じ方法でインターフェースを組み込む必要があります。最も簡単な方法はオートローダーを使用して、必要なときにクラスとインターフェースをPHPにロードさせることです。


0

  • インターフェイスは質問と同じですが、インターフェイスが作成され、 クラスで実装されている場合、クラスはすべてのクラスを使用する必要があります インタフェースのメソッド。インタフェースが短い場合は、メソッドが 宣言は定義されていない。クラスは外部(独自の)メソッドを使用できます。
  • インターフェイスを拡張することができます
  • すべてのメソッドは、インタフェースでpublicでなければなりません
  • あなたがBoseであり、あなたのクライアントに伝えたい場合 このメソッドまたはさまざまなタイプのメソッドを使用するには、単に 書き込みまたは作成してから、クライアントに クラス

インターフェイスをクラスに含めるには、インターフェイスを作成する必要があります。

 interface interface_name{
        public function submodule1();
        public function submodule2();
}

クラスで実装または適用する

class class_name implements interface_name{
public function submodule1()
{
//some code
}
public function submodule2()
{
//some code
}
}

リンクされた質問


関連する質問

最近の質問