ホームページ php教程 PHP开发 Laravelの依存関係注入のアイデア

Laravelの依存関係注入のアイデア

Nov 21, 2016 pm 04:23 PM

依存性注入

依存性注入は派手な用語ですが、実際には、クラスの依存関係がコンストラクター、場合によっては「セッター」メソッドを通じて「注入」されることを意味します。まず、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(&#39;user&#39;, [&#39;user_info&#39; => $user_info]);
    }
}
ログイン後にコピー

Laravel はクラスの依存関係を管理し、サービス コンテナーを通じて依存関係の注入を実行します。インターフェイスを関数パラメーターの型ヒントとして使用する場合は、指定された実装をインターフェイスにバインドする必要があります。

これは、いわゆるインターフェイス指向プログラミングです。インターフェイスは、仕様と制約として理解できます。高レベルのモジュールは低レベルのモジュールに直接依存せず、すべて抽象化 (インターフェイスと呼ばれる) に依存する必要があります。依存関係注入を使用する最も重要な利点は、オブジェクトとそれに必要な外部リソースが効果的に分離され、それらが疎結合になり、関数の再利用が容易になることです。さらに重要なのは、プログラムのアーキテクチャ全体が非常に柔軟になることです。 。

制御の反転

制御の反転 (Inversion of Control、略称 IoC) は、オブジェクト指向プログラミングにおける設計原則です。最も一般的な方法は依存性注入 (DI) と呼ばれ、もう 1 つの方法は「依存性ルックアップ」と呼ばれます。制御の反転により、オブジェクトが作成されると、システム内のすべてのオブジェクトを制御する外部エンティティが、依存するオブジェクトの参照をそれに渡します。依存関係がオブジェクトに注入されるとも言えます。

interface EventPusher {
    public function send($data);
}
ログイン後にコピー

IoC/DI コンテナがある場合、以下の図に示すように、クラス A は積極的に C を作成しなくなりました: Laravelの依存関係注入のアイデア

代わりに、IoC/DI コンテナが C を取得するのを受動的に待ちます。以下の図に示すように、インスタンスを作成し、それをクラス A に逆注入します。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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