Budowanie Laravel aplikacji za pomocą Dependency Injection

W tym artykule przeprowadzimy proces tworzenia Laravel aplikacji przy użyciu Dependency Injection zarządzania zależnościami i tworzenia łatwiejszej w utrzymaniu struktury kodu źródłowego. Stworzymy prosty przykład zarządzania listą produktów w sklepie.

Krok 1: Przygotowanie

Po pierwsze, upewnij się, że zainstalowałeś Laravel na swoim komputerze. Możesz użyć Composer do stworzenia nowego Laravel projektu:

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

Po utworzeniu projektu przejdź do katalogu projektu:

cd DependencyInjectionApp

Krok 2: Utwórz Service i Interface

Zacznijmy od utworzenia narzędzia service do zarządzania listą produktów. Utwórz interface i klasę, która to implementuje interface:

Utwórz plik app/Contracts/ProductServiceInterface.php:

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

Utwórz plik 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  
    }  
}  

Krok 3: Zarejestruj się w Service kontenerze

Otwórz plik app/Providers/AppServiceProvider.php i dodaj do register funkcji:

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

Krok 4: Używanie Dependency Injection

W kontrolerze możesz użyć Dependency Injection do wstrzyknięcia ProductService:

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

Wniosek

Wykorzystując Dependency Injection i Service Kontener w Laravel, zbudowaliśmy aplikację do zarządzania listą produktów. Takie podejście sprawia, że ​​kod źródłowy jest łatwiejszy w utrzymaniu i zmniejsza zależności między różnymi komponentami aplikacji.

Przećwicz i dostosuj projekt do swoich potrzeb, aby uzyskać głębsze zrozumienie używania Dependency Injection w Laravel.