Laravelの依存関係注入のアイデア
依存性注入
依存性注入は派手な用語ですが、実際には、クラスの依存関係がコンストラクター、場合によっては「セッター」メソッドを通じて「注入」されることを意味します。まず、Laravel コントローラーのコード例を見てみましょう:
<?php namespace App\Http\Controllers; use Illuminate\Routing\Controller; use App\Users\Repository as UserRepository; class UserController extends Controller { /** * 用户 Repository 的实例。 */ protected $users; /** * 创建一个新的控制器实例。 * * @param UserRepository $users * @return void */ public function __construct(UserRepository $users) { $this->users = $users; } /** * 显示指定 ID 的用户。 * * @param int $id * @return View */ public function show($id) { $user_info = $this->users->find($id); return view('user', ['user_info' => $user_info]); } }
ログイン後にコピー
Laravel はクラスの依存関係を管理し、サービス コンテナーを通じて依存関係の注入を実行します。インターフェイスを関数パラメーターの型ヒントとして使用する場合は、指定された実装をインターフェイスにバインドする必要があります。
これは、いわゆるインターフェイス指向プログラミングです。インターフェイスは、仕様と制約として理解できます。高レベルのモジュールは低レベルのモジュールに直接依存せず、すべて抽象化 (インターフェイスと呼ばれる) に依存する必要があります。依存関係注入を使用する最も重要な利点は、オブジェクトとそれに必要な外部リソースが効果的に分離され、それらが疎結合になり、関数の再利用が容易になることです。さらに重要なのは、プログラムのアーキテクチャ全体が非常に柔軟になることです。 。 制御の反転制御の反転 (Inversion of Control、略称 IoC) は、オブジェクト指向プログラミングにおける設計原則です。最も一般的な方法は依存性注入 (DI) と呼ばれ、もう 1 つの方法は「依存性ルックアップ」と呼ばれます。制御の反転により、オブジェクトが作成されると、システム内のすべてのオブジェクトを制御する外部エンティティが、依存するオブジェクトの参照をそれに渡します。依存関係がオブジェクトに注入されるとも言えます。interface EventPusher { public function send($data); }
ログイン後にコピー
IoC/DI コンテナがある場合、以下の図に示すように、クラス A は積極的に C を作成しなくなりました:
代わりに、IoC/DI コンテナが C を取得するのを受動的に待ちます。以下の図に示すように、インスタンスを作成し、それをクラス A に逆注入します。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
2週間前
By 尊渡假赌尊渡假赌尊渡假赌
レポ:チームメイトを復活させる方法
4週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
4週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
R.E.P.O.ファイルの保存場所:それはどこにあり、それを保護する方法は?
3週間前
By DDD

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7323
9


Java チュートリアル
1625
14


CakePHP チュートリアル
1350
46


Laravel チュートリアル
1262
25


PHP チュートリアル
1209
29

