ホームページ > バックエンド開発 > PHPチュートリアル > PHP 依存関係注入と制御の反転について、PHP 依存関係注入 inversion_PHP チュートリアル

PHP 依存関係注入と制御の反転について、PHP 依存関係注入 inversion_PHP チュートリアル

WBOY
リリース: 2016-07-12 08:52:48
オリジナル
874 人が閲覧しました

PHP の依存関係注入と制御の反転、PHP 依存関係注入の反転を理解する

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

本当http://www.bkjia.com/PHPjc/1125883.html技術記事 PHP 依存関係注入と制御反転、PHP 依存関係注入反転について理解する PHP 依存関係注入と制御反転の 2 つの概念を理解したい場合は、次の問題を理解する必要があります: DI——Dependency Inject...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート