ホームページ >PHPフレームワーク >ThinkPHP >ThinkPHP コンテナーの制御の反転と依存関係の注入

ThinkPHP コンテナーの制御の反転と依存関係の注入

咔咔
咔咔オリジナル
2020-10-10 11:27:492071ブラウズ

Dependency Injection Inversion of Control という名前はわかりにくいですが、この記事を読めば、それが何であるかがわかります。

3. 制御の反転と依存関係の注入を理解する方法

実際、これら 2 つは、物事は単なるプログラミングのアイデアであり、それを理解するのがそれほど難しくて高尚であるとは思わないでください。

それでは、コンテナとは何でしょうか? 直接理解すると、コンテナは物を保持するものです。プログラミングでは、共通の変数とオブジェクトのプロパティはすべてコンテナーです。コンテナに何を含めることができるかは、コンテナの定義に完全に依存します。

しかし、私たちが今議論しているのは、別の種類のコンテナです。これは、テキストや値ではなく、オブジェクト、クラス、インターフェイスを格納します。この種のコンテナを通じて、多くの高度な機能を実現できます。最も一般的なのは、使用されるのはコード、デカップリングと依存性注入です。

では、なぜ 2 つの概念があり、制御の反転と依存関係の注入について説明するのでしょうか。上で述べたように、これらは実際には同じものを指しますが、異なる角度から説明されています。

あなたが父親の息子であるのと同じように、あなたは祖父の孫です。息子と孫はどちらも同じ人物を指します。問題を別の視点から見るだけです。

制御の反転

は、問題をコンテナの観点から見ることです。コンテナはアプリケーションを制御し、コンテナはアプリケーションに必要な外部情報を逆に注入します。アプリケーションを application.resource に追加します。

依存性の注入

###

では、アプリケーションの観点から問題を検討します。アプリケーションは、必要な外部リソースの作成と注入をコンテナに依存します。

機能

主にコード間​​の結合度を減らすために使用されます。

アプリケーションに必要なオブジェクトと外部リソースを効果的に分離します。

#次の 2 つの図で問題を明確に説明できます

ThinkPHP コンテナーの制御の反転と依存関係の注入ThinkPHP コンテナーの制御の反転と依存関係の注入##簡単なケースを紹介します

#2 つのクラスを Person と Car として定義し、Person でインスタンスを作成し、Car で pay メソッドを呼び出します。

次に、それをコントローラーで呼び出します。出力される結果は Car から返される 123 でなければならないため、これは出力されません。

ThinkPHP コンテナーの制御の反転と依存関係の注入ここに画像の説明を挿入

ThinkPHP コンテナーの制御の反転と依存関係の注入この時点でコードを変更し、Car クラスを Person クラスに直接渡し、それを Person クラスで直接使用します。 class 渡されたオブジェクトは、対応するメソッドを呼び出すために使用されます。

ThinkPHP コンテナーの制御の反転と依存関係の注入これは単なる実装プロセスですが、フレームワークのコンテナー コードを読み取るための準備として、フレームワーク内のコンテナー インジェクションについては後で詳しく説明します。

学習の継続、ブログの継続、共有の継続は、Kaka が設立以来常に堅持してきた信念です。巨大なインターネット上の Kaka の記事が少しでもお役に立てれば幸いです。カカです、また会いましょう。

以上がThinkPHP コンテナーの制御の反転と依存関係の注入の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。