Att bygga en Laravel applikation med Dependency Injection

I den här artikeln kommer vi att gå igenom att bygga en Laravel applikation som använder Dependency Injection för att hantera beroenden och skapa en mer underhållbar källkodsstruktur. Vi kommer att skapa ett enkelt exempel på att hantera en produktlista i en butik.

Steg 1: Förberedelser

Se först till att du har Laravel installerat på din dator. Du kan använda Composer för att skapa ett nytt Laravel projekt:

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

När du har skapat projektet, navigera till projektkatalogen:

cd DependencyInjectionApp

Steg 2: Skapa Service och Interface

Låt oss börja med att skapa en service för att hantera produktlistan. Skapa en interface och en klass som implementerar detta interface:

Skapa filen app/Contracts/ProductServiceInterface.php:

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

Skapa filen 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  
    }  
}  

Steg 3: Registrera dig i Service behållaren

Öppna filen app/Providers/AppServiceProvider.php och lägg till register funktionen:

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

Steg 4: Använda Dependency Injection

I styrenheten kan du använda Dependency Injection för att injicera ProductService:

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

Slutsats

Genom att använda Dependency Injection och Service behållaren i Laravel har vi byggt en applikation för att hantera en produktlista. Detta tillvägagångssätt gör källkoden mer underhållbar och minskar beroenden mellan olika komponenter i applikationen.

Öva och anpassa projektet efter dina behov för att få en djupare förståelse för att använda Dependency Injection i Laravel.