Construire une Laravel application avec Dependency Injection

Dans cet article, nous allons parcourir la création d'une Laravel application en utilisant Dependency Injection pour gérer les dépendances et créer une structure de code source plus maintenable. Nous allons créer un exemple simple de gestion d'une liste de produits dans un magasin.

Étape 1: Préparation

Tout d'abord, assurez-vous que vous avez Laravel installé sur votre ordinateur. Vous pouvez utiliser Composer pour créer un nouveau Laravel projet :

composer create-project --prefer-dist laravel/laravel DependencyInjectionApp

Après avoir créé le projet, accédez au répertoire du projet :

cd DependencyInjectionApp

Étape 2: Créer Service et Interface

Commençons par créer un service pour gérer la liste des produits. Créez une interface et une classe qui implémente ceci interface:

Créez le fichier app/Contracts/ProductServiceInterface.php:

<?php  
  
namespace App\Contracts;  
  
interface ProductServiceInterface  
{  
    public function getAllProducts();  
    public function getProductById($id);  
}  

Créez le fichier 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  
    }  
}  

Étape 3: Enregistrez-vous dans le Service conteneur

Ouvrez le fichier app/Providers/AppServiceProvider.php et ajoutez à la register fonction :

use App\Contracts\ProductServiceInterface;  
use App\Services\ProductService;  
  
public function register()  
{  
    $this->app->bind(ProductServiceInterface::class, ProductService::class);  
}  

Étape 4: Utilisation Dependency Injection

Dans le contrôleur, vous pouvez utiliser Dependency Injection pour injecter ProductService:

use App\Contracts\ProductServiceInterface;  
  
public function index(ProductServiceInterface $productService)  
{  
    $products = $productService->getAllProducts();  
    return view('products.index', compact('products'));  
}  

Conclusion

En utilisant Dependency Injection et le Service conteneur dans Laravel, nous avons construit une application pour gérer une liste de produits. Cette approche rend le code source plus maintenable et réduit les dépendances entre les différents composants de l'application.

Entraînez-vous et personnalisez le projet en fonction de vos besoins pour mieux comprendre l'utilisation Dependency Injection de Laravel.