Opbygning af en Laravel applikation med Dependency Injection

I denne artikel vil vi gennemgå opbygningen af ​​en Laravel applikation, der bruger Dependency Injection til at administrere afhængigheder og skabe en mere vedligeholdelig kildekodestruktur. Vi vil lave et simpelt eksempel på håndtering af en produktliste i en butik.

Trin 1: Forberedelse

For det første skal du sikre dig, at du har Laravel installeret på din computer. Du kan bruge Composer til at oprette et nyt Laravel projekt:

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

Når du har oprettet projektet, skal du navigere til projektbiblioteket:

cd DependencyInjectionApp

Trin 2: Opret Service og Interface

Lad os starte med at oprette en service til at administrere produktlisten. Opret en interface og en klasse, der implementerer dette interface:

Opret filen app/Contracts/ProductServiceInterface.php:

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

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

Trin 3: Tilmeld dig i Service containeren

Åbn filen app/Providers/AppServiceProvider.php og føj til register funktionen:

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

Trin 4: Brug Dependency Injection

I controlleren kan du bruge Dependency Injection til at injicere ProductService:

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

Konklusion

Ved at bruge Dependency Injection og Service containeren i Laravel har vi bygget en applikation til at administrere en produktliste. Denne tilgang gør kildekoden mere vedligeholdelsesvenlig og reducerer afhængigheden mellem forskellige komponenter i applikationen.

Øv og tilpas projektet efter dine behov for at få en dybere forståelse af at bruge Dependency Injection i Laravel.