PHP の依存関係注入と制御の反転の 2 つの概念を理解するには、次の問題を理解する必要があります:
DI——依存関係の注入
IoC——制御の反転
1. 参加者は誰ですか?
答え: 通常、3 つのパーティがあり、1 つはオブジェクト、1 つは IoC/DI のコンテナ、もう 1 つはオブジェクトの外部リソースです。名詞についてもう一度説明します。オブジェクトは通常の Java オブジェクトを指します。IoC/DI コンテナは、単に IoC/DI 機能を実装するために使用されるフレームワーク プログラムを指します。オブジェクトの外部リソースは必要ですが、取得されます。オブジェクトの外部からのリソースは、オブジェクトが必要とする他のオブジェクトや、オブジェクトが必要とするファイル リソースなど、総称してリソースと呼ばれます。
2. 依存: 誰が誰に依存しているのか?なぜ依存関係があるのでしょうか?
答え: オブジェクトは IoC/DI コンテナに依存します。プロジェクトでは、さまざまなクラス間にさまざまな関係があり、すべてが完全に独立していることは不可能であり、依存関係が形成されます。従来の開発では、他のクラスを使用するときに直接呼び出しますが、これは強い結合を形成するため、避けるべきです。依存関係の注入では、コンテナーを借用して依存オブジェクトを転送し、分離を実現します。
3. 注射: 誰が誰に注射しますか?いったい何が注入されるのでしょうか?
答え: 必要な外部リソースをコンテナを通じてオブジェクトに注入します
4. 制御の逆転: 誰が誰を制御するのか?何を制御しますか?なぜ逆転と呼ばれるのでしょうか?
回答: IoC/DI のコンテナ制御オブジェクトは、主にオブジェクト インスタンスの作成を制御します。反転は正の方向と相対的なものですが、何が正の方向とみなされるのでしょうか?通常の状況でアプリケーションを考えてみましょう。A の中で C を使用したい場合はどうしますか?もちろん、C のオブジェクトは直接作成されます。つまり、必要な外部リソース C がクラス A で能動的に取得されます。この状況を順方向と呼びます。では、逆とは何でしょうか?つまり、クラス A は積極的に C を取得するのではなく、IoC/DI コンテナが C のインスタンスを取得するのを受動的に待ち、それを逆にクラス A に注入します。
5. 依存関係の注入と制御の反転は同じ概念ですか?
答え: 上記からわかるように、依存関係の注入はアプリケーションの観点から完全に説明できます。アプリケーションは必要な外部リソースの作成と注入をコンテナーに依存します。制御の反転 コンテナの観点から説明します。完全に説明すると、コンテナはアプリケーションを制御し、コンテナはアプリケーションに必要な外部リソースをアプリケーションに逆に注入します。
例を通して依存関係注入の実装方法をいくつか見てみましょう:
1.コンストラクターインジェクション リーリー
2. セッター注入 リーリー
上記 2 つのメソッドのコードは非常に明確ですが、多くの依存関係を挿入する必要がある場合、多くの行を追加することになり、管理がより困難になります。より良い解決策は、すべての依存関係のコンテナとしてクラスを作成することです。このクラスでは、必要な依存関係を保存、作成、取得、検索できます。 リーリー
現時点で、ブックインスタンスを取得したい場合は、 $newone = Ioc::makebook(); を実行するだけです
上記はコンテナの具体的な例です。具体的な依存関係注入メソッドは書かない方が良いです。
リーリー次の方法で登録して注入できるようになりました
リーリー上記は PHP の依存関係注入と制御の反転についての理解であり、PHP プログラミングを学習する皆さんのお役に立てば幸いです。
http://www.bkjia.com/PHPjc/1125883.html