Laravelリポジトリを作成し、サービスプロバイダとしての結合

TOLGA:

私はsymfonyのと春の背景を持っている、これはLaravelと私の最初のプロジェクトであり、私の知る限り理解されるようにLaravelはリポジトリのビルドでサポートしていません。私はいくつかのチュートリアルを発見しました。それらのいくつかは、春もしくはsymfonyのようなアーキテクチャを提供してみてください。

一例として、このブログには、フォルダ構造を示している。このように:

---- Repository
------ Eloquent
-------- UserRepository.php // extends BaseRepository
-------- BaseRepository.php // implements EloquentRepositoryInterface
------ UserRepositoryInterface.php
------ EloquentRepositoryInterface.php 

これは悪いことではありません。私は混乱している点が、著者は、サービス・プロバイダーとしてこれらのリポジトリを結合して、プロバイダとしてのコントローラでそれらにアクセスすることを示唆している、です。

class RepositoryServiceProvider extends ServiceProvider 
{  
    public function register() 
    { 
        $this->app->bind(EloquentRepositoryInterface::class, BaseRepository::class);
        $this->app->bind(UserRepositoryInterface::class, UserRepository::class);
    }
}

私は直接、コントローラでのユーザーリポジトリを消費雄弁リポジトリの作成に焦点を当てたのGithubでライブラリを見つけることにしましたより:

class HomeController extends Controller
{
    public function index(UserRepository $userRepository)
    {
        return $userRepository->get();
        ...

アーキテクチャの観点からは、我々は、プロバイダとしてバインドリポジトリに必要なのですか(レッツ・はAWSや弾性検索は、プロジェクトに参加することができ、リポジトリは、単一のモデルのために異なる場合があるという事実を考えます)

そして、最も重要なのは、なぜLaravelは組み込まれていませんリポジトリパターンをサポートしていますか?ありがとうございました

N69S:

なぜLaravelは組み込まれていませんリポジトリパターン

すべてで使用されている場合、彼らが使用する方法に関するコンセンサスがないので。

例えば、私はコントローラにlaravelモデルとモデルインスタンスをインスタンス化する必要がlaravelコントローラとIの間の仲介として決してそれら注入をリポジトリを使用していないが、必要なときに手動でインスタンス化します。

我々は、プロバイダとしてのリポジトリをバインドする必要がありますか?

とてもコンセンサスが存在しない、上記と述べたNOが

あなたのリポジトリの設計方法によって異なり、あなたは(で、コントローラのインスタンス化にそれらを注入し、それらを手動でインスタンス化することができ__contruct(UserRepository $userRepository)ますが、laracastからスクラッチチュートリアルからlaravelで参照するか、サービスプロバイダとして使用できます)。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=9868&siteId=1
おすすめ