Bygge en Laravel applikasjon med Dependency Injection

I denne artikkelen vil vi gå gjennom å bygge en Laravel applikasjon som bruker Dependency Injection til å administrere avhengigheter og lage en mer vedlikeholdbar kildekodestruktur. Vi skal lage et enkelt eksempel på å administrere en produktliste i en butikk.

Trinn 1: Forberedelse

Først må du kontrollere at du har Laravel installert på datamaskinen. Du kan bruke Composer til å opprette et nytt Laravel prosjekt:

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

Etter å ha opprettet prosjektet, naviger til prosjektkatalogen:

cd DependencyInjectionApp

Trinn 2: Lag Service og Interface

La oss starte med å lage en service for å administrere produktlisten. Lag en interface og en klasse som implementerer dette interface:

Lag filen app/Contracts/ProductServiceInterface.php:

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

Lag 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  
    }  
}  

Trinn 3: Registrer deg i Service containeren

Åpne filen app/Providers/AppServiceProvider.php og legg til register funksjonen:

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

Trinn 4: Bruk Dependency Injection

I kontrolleren kan du bruke Dependency Injection til å injisere ProductService:

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

Konklusjon

Ved å bruke Dependency Injection og Service containeren i Laravel har vi bygget en applikasjon for å administrere en produktliste. Denne tilnærmingen gjør kildekoden mer vedlikeholdbar og reduserer avhengighetene mellom ulike komponenter i applikasjonen.

Øv på og tilpass prosjektet etter dine behov for å få en dypere forståelse av bruk Dependency Injection i Laravel.