У меня есть Symfony и Spring, это мой первый проект с Laravel, и, насколько я понял, Laravel не имеет встроенной поддержки для репозиториев. Я нашел несколько уроков; некоторые из них пытаются предложить архитектуру, такую как Spring или 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, которая фокусируется на создании Eloquent Repository, который напрямую использует пользовательский репозиторий в контроллере:
class HomeController extends Controller
{
public function index(UserRepository $userRepository)
{
return $userRepository->get();
...
С архитектурной точки зрения, нужно ли связывать репозитории как провайдеры ? (Давайте подумаем тот факт, что AWS или Elasti c Search могут присоединиться к проекту и репозитории могут отличаться для одной модели)
И самое главное, почему Laravel не имеет встроенного репозитория поддержка шаблона? Спасибо