Neste artigo, vamos percorrer a construção de um Laravel aplicativo usando Dependency Injection para gerenciar dependências e criar uma estrutura de código-fonte mais fácil de manter. Vamos criar um exemplo simples de gerenciamento de uma lista de produtos em uma loja.
Passo 1: Preparação
Em primeiro lugar, certifique-se de ter Laravel instalado em seu computador. Você pode usar Composer para criar um novo Laravel projeto:
composer create-project --prefer-dist laravel/laravel DependencyInjectionApp
Depois de criar o projeto, navegue até o diretório do projeto:
cd DependencyInjectionApp
Passo 2: Crie Service e Interface
Vamos começar criando um service para gerenciar a lista de produtos. Crie uma interface classe e uma que implemente isso interface:
Crie o arquivo app/Contracts/ProductServiceInterface.php
:
<?php
namespace App\Contracts;
interface ProductServiceInterface
{
public function getAllProducts();
public function getProductById($id);
}
Crie o arquivo app/Services/ProductService.php
:
<?php
namespace App\Services;
use App\Contracts\ProductServiceInterface;
class ProductService implements ProductServiceInterface
{
public function getAllProducts()
{
// Logic to get all products
}
public function getProductById($id)
{
// Logic to get product by ID
}
}
Etapa 3: registrar-se no Service contêiner
Abra o arquivo app/Providers/AppServiceProvider.php
e adicione à register
função:
use App\Contracts\ProductServiceInterface;
use App\Services\ProductService;
public function register()
{
$this->app->bind(ProductServiceInterface::class, ProductService::class);
}
Passo 4: Usando Dependency Injection
No controlador, você pode usar Dependency Injection para injetar ProductService
:
use App\Contracts\ProductServiceInterface;
public function index(ProductServiceInterface $productService)
{
$products = $productService->getAllProducts();
return view('products.index', compact('products'));
}
Conclusão
Utilizando Dependency Injection e o Service Container em Laravel, construímos um aplicativo para gerenciar uma lista de produtos. Essa abordagem torna o código-fonte mais fácil de manter e reduz as dependências entre os diferentes componentes do aplicativo.
Pratique e personalize o projeto de acordo com suas necessidades para obter uma compreensão mais profunda do uso Dependency Injection em Laravel.