制御の反転 (IoC) は、コンピューター コード間の結合を減らすために使用できるオブジェクト指向プログラミングの設計原則です。最も一般的な方法は、依存性注入 (DI) と呼ばれます。以下では、PHP における依存関係注入の 3 つの方法を紹介します。
推奨チュートリアル:PHP ビデオ チュートリアル
##1. コンストラクター インジェクション
コンストラクターのパラメーターを通じて依存オブジェクトを依存オブジェクトに注入し、オブジェクトの初期化時にそれを注入します。
利点:
オブジェクトの初期化が完了すると、使用可能なオブジェクトを取得できます。欠点:
●注入する必要があるオブジェクトが多数ある場合、コンストラクターのパラメーターのリストが非常に長くなります。●柔軟性に欠けます。十分。複数の注入メソッドがあり、各メソッドがいくつかの指定された依存関係のみを注入する必要がある場合、複数のオーバーロードされたコンストラクターを提供する必要があり、面倒です
2. Setter メソッドの注入
IoC サービス プロバイダーは、メンバー変数によって提供される setter 関数を呼び出すことによって、依存オブジェクトを依存クラスに挿入します。
利点:
柔軟性。必要なオブジェクトを選択して注入できます。
欠点:
依存オブジェクトが初期化された後は、依存オブジェクトがまだ挿入されていないため、使用できません。
3. インターフェイス インジェクション
依存クラスは、指定されたインターフェイスを実装し、次にそのインターフェイスに関数を実装する必要があります。依存性の注入。この関数のパラメータは、注入されるオブジェクトです。
利点
インターフェイス インジェクションでは、関数のパラメーターが次の型である限り、インターフェイスの名前と関数の名前は重要ではありません。注入されるオブジェクト。
デメリット
侵入力が強すぎるため、お勧めできません。
PS: 侵入ラインとは何ですか?
クラス A が他の人が提供する関数を使用したい場合、この関数を使用するために独自のクラスに追加のコードを追加する必要がある場合、これは煩雑です。
以上がPHPでの依存性注入の3つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。