Oii, Samuel! Tudo bem?
Parabéns por estar querendo implementar melhorias em seu projeto com insights da aula, Samuel!
Uma sugestão de fazer isso é utilizando o Service Container e o Service Provider do Laravel. O Service Container é responsável por criar e injetar instâncias para nós, enquanto o Service Provider registra os serviços que queremos prover.
Para criar um repositório para os métodos da sua Model, você pode seguir os seguintes passos:
- Crie um novo Service Provider executando o comando:
php artisan make:provider NomeDoServiceProvider
Por exemplo, se você quiser criar um repositório para a Model "User", você pode executar:
php artisan make:provider UserRepositoryProvider
Abra o arquivo do Service Provider criado, que estará localizado na pasta app/Providers
.
No método register()
do Service Provider, utilize o método bind()
do $this->app
para ligar a interface do repositório à classe concreta. Por exemplo, se você tiver uma interface chamada UserRepository
e uma classe concreta chamada EloquentUserRepository
, você pode fazer o seguinte:
$this->app->bind(UserRepository::class, EloquentUserRepository::class);
- Registre o Service Provider no arquivo
config/app.php
, adicionando a classe do Service Provider ao array de providers. Por exemplo:
\App\Providers\UserRepositoryProvider::class,
Feito os passos, sempre que você precisar de uma instância do repositório, o Laravel irá criar uma instância da classe concreta correspondente.
Para aprofundar os conhecimentos em Service Container e o Service Provider antes de aplicá-los, recomendo a leitura da documentação oficial do Laravel sobre o tema, dessa forma você consegue criar uma base mais sólida no seu conhecimento.
Espero ter ajudado.
Bons estudos, Samuel!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!