Shopware 6 ist ein beliebtes E-Commerce-Framework, das es Entwicklern ermöglicht, leistungsstarke Online-Shops zu erstellen und anzupassen. Eine der Stärken von Shopware 6 liegt in der flexiblen Erweiterbarkeit durch Plugins. In diesem Blog-Post werden wir uns mit dem Thema Dependency Injection (DI) Autowiring in Shopware 6 Plugins befassen und die Vorteile dieser Funktion sowie die Konfigurationsschritte erklären.

Was ist Autowiring?

Autowiring ist ein Konzept der Dependency Injection, das es ermöglicht, Abhängigkeiten zwischen verschiedenen Klassen automatisch zu verknüpfen, anstatt diese manuell zu konfigurieren. Statt explizit zu definieren, welche Abhängigkeiten eine Klasse benötigt und wie sie bereitgestellt werden sollen, kann Autowiring automatisch die richtigen Abhängigkeiten für eine Klasse auflösen und sie zur Laufzeit injizieren.

Durch die Verwendung von Autowiring wird unser Entwicklungsprozess vereinfacht, da wir weniger manuelle Konfigurationsschritte durchführen müssen. Dadurch wird der Code einfach zu verstehen und zu warten.

Autowiring in Shopware 6 Plugins

Shopware 6 basiert auf dem Symfony-Framework und unterstützt dessen Dependency Injection. Daher kann dieses Feature vollständig in Plugins verwendet werden.

Um Autowiring in einem Shopware 6 Plugin zu aktivieren, müssen wir eine Konfigurationsdatei mit dem Namen Resources/config/services.xml in deinem Plugin erstellen bzw. bearbeiten. Hier ein minimales Beispiel, welches ausschließlich Autowiring verwendet.

<?xml version="1.0" ?>

<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

    <services>
        <defaults autowire="true" autoconfigure="true"/>

        <prototype namespace="Vendor\PluginName\" resource="../../../src/*" exclude="../src/{Resources}"/>
    </services>
</container>

In diesem Beispiel werden die autowire- und autoconfigure-Attribute auf true gesetzt, um Autowiring zu aktivieren.

Der prototype-Block definiert den Namespaceroot unseres Plugins und den Pfad, in dem nach Klassen gesucht werden soll. Beachte bitte, dass der Pfad relativ zur services.xml-Datei angegeben wird.

Oft willst du bestimmte Klassen vom Autowiring ausnehmen, dies kannst du mit dem exlude Attribut tun. In unserem Beispiel haben wir den Resources-Ordner ausgeschlossen, da sich hier kein lediglich Konfigurationsdateien, Templates etc. befinden.

Vorteile von Autowiring in Shopware 6 Plugins

Die Verwendung von Autowiring in Shopware 6 Plugins bietet mehrere Vorteile:

  • Einfache Konfiguration: Autowiring ermöglicht es dir, auf die eigentliche Logik des Plugins zu konzentrieren, anstatt Zeit mit der manuellen Konfiguration von Abhängigkeiten zu verschwenden. Das Auflösen dieser wird automatisiert und vereinfacht.
  • Flexibilität: Autowiring erleichtert dir die Änderung von Abhängigkeiten, da die Konfiguration zentralisiert ist. Wenn eine Klasse eine neue Abhängigkeit benötigt, kannst du diese einfach im Konstruktur angeben. Das Autowiring kümmert sich um den Rest.
  • Wartbarkeit: Durch die Verwendung von Autowiring wird dein Code lesbarer und besser wartbar. Die Abhängigkeiten einer Klasse sind transparent und müssen nicht manuell überprüft und konfiguriert werden.

Fazit

Die Verwendung von Autowiring in Shopware 6 Plugins ermöglicht dir eine einfachere Konfiguration und eine flexiblere Handhabung von Abhängigkeiten. Durch die Aktivierung des Autowirings kannst du dich auf die eigentliche Plugin-Logik konzentrieren und deine Produktivität steigern.

Das beste: Du kannst Autowiring jederzeit aktivieren, auch wenn du bereits Services in deinem Plugin konfiguriert hast.

Probiere es aus und lass mich auf Twitter oder Masterdon wissen, wie es dir gefällt!