Was ist Dependency Injection (DI)?
Dependency Injection (DI) ist ein Design-Pattern, das hilft, Abhängigkeiten in einem System zu verwalten. Statt dass eine Klasse ihre Abhängigkeiten selbst erstellt, werden sie von außen übergeben.
Warum ist Dependency Injection wichtig?
- 🔹 Lose Kopplung: Module sind flexibler und wiederverwendbar
- 🔹 Bessere Testbarkeit: Mocking von Services für Unit-Tests
- 🔹 Einfachere Wartung: Änderungen an Abhängigkeiten betreffen nicht den Code in vielen Klassen
Dependency Injection in Shopware 6
Shopware 6 nutzt das Symfony Dependency Injection Container. Das bedeutet, dass alle Services in einer zentralen Konfigurationsdatei definiert werden.
Beispiel: Ein eigener Shopware-Service mit DI
Erstellen wir einen ProductService
, der Produktinformationen bereitstellt:
namespace MyPlugin\Service;
class ProductService {
public function getProductName(int $id): string {
return "Produkt " . $id;
}
}
Den Service in einem Controller verwenden
Dank Dependency Injection können wir den Service einfach in einen Controller einfügen:
namespace MyPlugin\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use MyPlugin\Service\ProductService;
class ProductController extends AbstractController {
private ProductService $productService;
public function __construct(ProductService $productService) {
$this->productService = $productService;
}
public function showProduct(int $id) {
return $this->json(['name' => $this->productService->getProductName($id)]);
}
}
Fazit
Dependency Injection sorgt für sauberen, flexiblen und testbaren Code. Da Shopware 6 auf Symfony basiert, ist die Nutzung des DI-Containers die beste Möglichkeit, Code effizient zu strukturieren.
Möchtest du deine Shopware-Projekte mit Dependency Injection optimieren? Kontaktiere mich – ich unterstütze dich gerne!