ホームページ  >  記事  >  PHPフレームワーク  >  Laravelにおける依存性注入と制御の反転とは何ですか

Laravelにおける依存性注入と制御の反転とは何ですか

WBOY
WBOYオリジナル
2022-06-06 10:44:082336ブラウズ

laravel では、依存関係の注入はアプリケーションにコンポーネントを注入する動作であり、依存関係の明示的な宣言です。制御の反転はオブジェクト指向プログラミングの設計原則であり、コンピューター コードの複雑さを軽減するために使用されます。クラス間の結合度は、あるクラスがその制御を別のオブジェクトに渡し、クラス間の依存関係がこのオブジェクトによって解決されることを意味します。

Laravelにおける依存性注入と制御の反転とは何ですか

#この記事の動作環境: Windows 10 システム、Laravel バージョン 6、Dell G3 コンピューター。

laravel の依存性注入と制御反転とは

1. 依存性注入

依存性注入という用語は Martin Fowler によって提案された用語です。コンポーネントをアプリケーションに挿入する行為。 Ward Cunningham 氏は次のように述べています。

依存性の注入はアジャイル アーキテクチャの重要な要素です。

例:

class UserProvider{
    protected $connection;
 
    public function __construct(){
        $this->connection = new Connection;
    }
 
    public function retrieveByCredentials( array $credentials ){
        $user = $this->connection
                        ->where( 'email', $credentials['email'])
                        ->where( 'password', $credentials['password'])
                        ->first();
 
        return $user;
    }
}

このクラスをテストまたは保守する場合は、データベース インスタンスにアクセスしてクエリを実行する必要があります。これを回避するには、このクラスを他のクラスから分離します。Connection クラスを直接使用せずに挿入する 3 つのオプションのいずれかがあります。

2. 制御の反転

制御の反転 (Inversion of Control、略して IoC) は、カップリングの削減に使用できるオブジェクト指向プログラミングの設計原則です。コンピューターコードの間。最も一般的な方法は依存関係注入 (DI) と呼ばれ、もう 1 つの方法は依存関係ルックアップと呼ばれます。制御の反転により、オブジェクトが作成されると、システム内のすべてのオブジェクトを制御する外部エンティティが、依存するオブジェクトの参照をそれに渡します。

簡単に言うと、クラスはその制御を別のオブジェクトに渡し、クラス間の依存関係はこのオブジェクトによって解決されます。依存関係の注入は依存関係の明示的な宣言ですが、依存関係のルックアップはルックアップを通じて依存関係を解決します。

制御の反転はメソッドではなく設計思想です。Laravel は Spring フレームワークと同じです。名詞の反転を気にする必要はありません。従来のオブジェクトが積極的にその制御を取り入れているという説明です。オブジェクトに属性が割り当てられており、フレームワークで行うことはコンテナを操作することだけです。コンテナはマッピングを通じて必要な属性を自動的に見つけて割り当てます。オブジェクトは依存オブジェクトを受動的に受け入れるだけです。問題を方法から見てみましょうオブジェクトの属性を取得します。

拡張知識:

Laravel での使用法

クラスの挿入:

App::bind('foo', function($app){    return new FooBar;
});

この例は、クラスのエイリアスを作成することを意味します。 foo、FooBar は使用時に実際にインスタンス化されます。

このクラスを使用するメソッドは次のとおりです:

$value = App::make('foo');

$value は実際には FooBar オブジェクトです。

シングルトン モードを使用してクラスをインスタンス化する場合は、次を使用します。

App::singleton('foo', function(){    return new FooBar;
});

この方法では、毎回同じオブジェクトがインスタンス化されます。

[関連する推奨事項: laravel ビデオチュートリアル ]

以上がLaravelにおける依存性注入と制御の反転とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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