Какой провайдер я использую для привязки моих хранилищ базы данных в laravel 5?

Я работаю с Laravel 5, и я начинающий разработчик, поэтому я только что узнал, как использовать шаблон Repository. Теперь, когда новички идут, я сначала использую файл rout.php, чтобы связать мой UserRepositoryInterface в DbUserRepository вот так:

App::bind('UserRepositoryInterface', 'DbUserRepository');

Это просто psuedo, изобразите пространства имен с помощью приведенного выше кода.

Поэтому после этого я понял, что существует нечто, называемое поставщиком услуг, которое должно содержать такой код. Теперь я рефакторинг это в AppServiceProvider в моем Providers папка и все отлично работает.

Но так как у меня будет намного больше репозиториев, это хорошая идея, чтобы поместить их в AppServiceProvider или я должен пойти дальше и сделать специального провайдера для своих репозиториев и связать их там? Каков наилучший способ сделать это? Есть ли для этого стандарт?

1

Решение

Позже я понял, что это все о предпочтениях, поэтому я написал RepositoryServiceProvider в котором я связываю все контракты репозитория с желаемыми реализациями следующим образом:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

use Archive\Repositories\TenantRepository;
use Archive\Repositories\TenantRepositoryEloquent;

use Archive\Repositories\UserRepository;
use Archive\Repositories\UserRepositoryEloquent;

use Archive\Repositories\OrderRepository;
use Archive\Repositories\OrderRepositoryEloquent;

class RepositoryServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}

/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->app->bind(TenantRepository::class, TenantRepositoryEloquent::class);
$this->app->bind(UserRepository::class, UserRepositoryEloquent::class);
$this->app->bind(OrderRepository::class, OrderRepositoryEloquent::class);
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]