2017-01-25 3 views
1

私にはそれほど明確ではありませんララベル。そして私たちの上司はこのようになりstuctureを望んでいる:構造方法は、私たちがコンストラクタを必要と誰かが私のコントローラから、このコードについて私に説明できる理由について困惑している

コントローラ - >サービス - >リポジトリ - >モーダル - >データベース

それはかなりまっすぐ進むのです私はこのルートつもりとき:

コントローラ - >モーダル - >データベース。

しかし、私は最初のものに従わなければなりません。上記のコードはコントローラのサンプルです

上記のコードには、2つのサービス、MerchantServiceおよびPaymentServiceがあります。しかし、私は正確にコンストラクタがMerchant service変数と支払い変数を使って何をしているのかを理解していません。それはMerchant servicePaymentServiceのオブジェクトを開始していますか?

答えて

1

Laravelサービスコンテナは、クラス依存関係を管理し、依存関係注入を実行する強力なツールです。依存関係注入は、基本的にこれを意味するファンシーフレーズです。クラス依存関係は、コンストラクタまたは場合によっては「セッタ」メソッドを介してクラスに「注入」されます。この例では

public function __construct(UserRepository $users) 
{ 
    $this->users = $users; 
} 

、UserControllerでは、データソースからユーザーを取得する必要があります。そこで、ユーザーを取得できるサービスを導入します。このコンテキストでは、UserRepositoryはEloquentを使用してデータベースからユーザー情報を取得します。リポジトリは注入されているので、別の実装と簡単に交換することができます。また、アプリケーションをテストする際に、簡単に「模擬」するか、またはUserRepositoryのダミー実装を作成することもできます。

https://laravel.com/docs/5.3/container

+0

thx Alexey Mezenin。あなたがユーザーログインのためにこれをやりたいのであれば少し説明できますか?UserLoginController - > LoginService - > LoginReposity – Mikethetechy

+0

@MohamedManas [Laravelビルトイン認証scaffold](https://laravel.com/docs/5.3/authentication#introduction)を使用することをお勧めします。そのためにリポジトリまたはサービスを作成する必要はありません。 –

+0

はい、あなたの権利は、Authでビルドされ、プロセス全体がはるかに簡単になります、私はそれを最初に作った..しかし、彼らは私がこの構造を通過することを望む:(.. UserLoginController - > LoginService - > Loginrepository - > DBなぜthat sts – Mikethetechy

0

これはdepedency injectionと呼ばれるデザインパターンです。
これは良い方法ですので、簡単にテストを書き込んだり、サービスを変更したりすることができます。

あなたはdependecy injectionhere on SO itself、またはhere on wikipediaについての詳細情報を読むことができます。

+0

情報のためのTHX ...リンクはコントローラ...イムまだ混乱してからリポジトリについて話します。..のような、たとえば私はUserLoginControllerを持っていると私はこれを実行する必要がある場合: UserLoginController-> LoginService-> LoginRepository-> modal。私はそれを単純にデータをデータベースに送信します。しかし、私はLoginRepositoryまでUserLoginControllerからそれをやりますか?無知のために申し訳ありません... – Mikethetechy

関連する問題