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.