METHODOLOGY

Ein produktionsreifes individuelles Magento-2-Modul bauen

Ein produktionsreifes Magento-2-Modul braucht korrekte Registrierung, Declarative Schema für DB-Änderungen, Dependency Injection statt ObjectManager, Service Contracts für APIs und Tests. Die zwei häufigsten Gründe, warum Module beim Upgrade brechen, sind ausgelassenes Declarative Schema und durchgesickerter ObjectManager.

JUN 07, 2026 4 Min. Lesezeit Wizutech Engineering

Ein produktionsreifes Magento-2-Modul braucht korrekte Registrierung, Declarative Schema für jede Datenbankänderung, Dependency Injection statt ObjectManager, Service Contracts für öffentliche APIs, Plugins statt Klassen-Rewrites und automatisierte Tests. Die zwei Fehler, die Module beim Upgrade brechen, sind ausgelassenes Declarative Schema und durchgesickerter ObjectManager.

Das Wichtigste

  • Nutzen Sie Declarative Schema (db_schema.xml) statt InstallSchema-Skripten — es übersteht Upgrades sauber.
  • Injizieren Sie Abhängigkeiten über den Konstruktor; rufen Sie im Geschäftscode nie direkt ObjectManager auf.
  • Stellen Sie Funktionalität über Service Contracts (Api/-Interfaces) bereit, damit andere Module von stabilen APIs abhängen.
  • Bevorzugen Sie Plugins (Interceptors) gegenüber Klassen-Rewrites, um upgrade-sicher zu bleiben.
  • Liefern Sie Unit- + Integrationstests; Magentos Test-Framework fängt DI- und Schema-Regressionen früh.

1. Registrierung und Deklaration

Jedes Modul beginnt mit registration.php und etc/module.xml. Deklarieren Sie Modulabhängigkeiten in module.xml, damit Abhängigkeitsgraph und Ladereihenfolge explizit sind.

2. Datenbankänderungen: nur Declarative Schema

Definieren Sie Tabellen und Spalten in etc/db_schema.xml und erzeugen Sie db_schema_whitelist.json. Declarative Schema ist über Upgrades hinweg reversibel und idempotent — der häufigste Grund, warum alte Module brechen, sind veraltete InstallSchema/UpgradeSchema-Skripte.

3. Dependency Injection statt ObjectManager

Typisieren Sie Abhängigkeiten im Konstruktor und lassen Sie sie vom DI-Container bereitstellen. Direkte ObjectManager::getInstance()-Aufrufe verstecken Abhängigkeiten, brechen die Testbarkeit und werden von Magentos Coding Standards markiert.

4. Service Contracts für alles Öffentliche

Wenn andere Module (oder Ihr eigenes Frontend/API) Ihre Logik nutzen, stellen Sie sie über Interfaces unter Api/ und Api/Data/ bereit, gebunden in di.xml. Service Contracts geben eine stabile Oberfläche und machen REST/GraphQL trivial.

5. Verhalten mit Plugins erweitern, nicht mit Rewrites

Nutzen Sie before/after/around-Plugins. Klassen-Preferences (Rewrites) kollidieren mit anderen Modulen und verlieren Änderungen beim Upgrade stillschweigend. Nutzen Sie around sparsam — es hat die höchsten Performance-Kosten.

6. Testen

Fügen Sie Unit-Tests für reine Logik und Integrationstests für DI-Verdrahtung und Schema hinzu. Ein Modul ohne Tests bricht beim nächsten Plattform-Upgrade stillschweigend.

Auf einem übergabefähigen Standard erledigen lassen? Siehe Magento-/Hyvä-Entwicklung oder Angebot anfordern.

Häufig gestellte Fragen

Was ist der Unterschied zwischen Declarative Schema und Setup-Skripten in Magento 2?

Declarative Schema (db_schema.xml) beschreibt den gewünschten Datenbankzustand, und Magento berechnet die Änderungen — dadurch idempotent und upgrade-sicher. Alte InstallSchema/UpgradeSchema-Skripte laufen imperativ und scheitern oft in späteren Versionen, was Module bricht.

Sollte ich in Magento 2 Plugins oder Rewrites verwenden?

Verwenden Sie fast immer Plugins (Interceptors). Klassen-Rewrites (Preferences) kollidieren, wenn zwei Module dieselbe Klasse anvisieren, und können Änderungen beim Upgrade still verlieren. Nutzen Sie around-Plugins nur wenn nötig, da sie den größten Performance-Overhead haben.

Warum wird der direkte ObjectManager-Einsatz in Magento 2 abgeraten?

Direkte ObjectManager-Aufrufe verstecken die echten Abhängigkeiten einer Klasse, erschweren Unit-Tests und verletzen Magentos Coding Standards. Injizieren Sie Abhängigkeiten stattdessen über den Konstruktor und lassen Sie sie vom DI-Container auflösen.

Brauchen Magento-2-Module Tests?

Ja, für alles Produktive. Unit-Tests decken Geschäftslogik ab, Integrationstests prüfen Dependency Injection und Schema. Tests sind der günstigste Weg, Regressionen zu fangen, bevor ein Plattform-Upgrade das Modul in Produktion bricht.

Wizutech Admin

Wizutech Engineering

Alle Beiträge

// Nächster Schritt

Bereit für Ihre
eigene Fallstudie?

Jeder Artikel hier begann mit einem Gespräch. Sagen Sie uns, was Sie betreiben.