PrestaShop 9 ist der groesste architektonische Sprung seit der 1.7-Serie. Unter der Haube wechselte die Plattform zu Symfony 6.4 LTS, ersetzte Legacy-ObjectModel-Muster durch Doctrine ORM fuer Core-Entitaeten und fuehrte eine richtige API Platform-basierte REST-API ein. Wenn Sie Module pflegen, sind diese Aenderungen relevant – und eine fruehzeitige Vorbereitung erspart Ihnen spaeter hektisches Nacharbeiten.
Der Wechsel zu Symfony 6.4
PrestaShop 9 wird mit Symfony 6.4 ausgeliefert, was fuer Modulentwickler mehrere Dinge bedeutet:
- Service-Definitionen muessen die neuen Autowiring-Konventionen verwenden – der alte
services.yml-Ansatz funktioniert noch, ist aber veraltet - Controller-Annotationen werden durch PHP-8-Attribute ersetzt –
#[Route]statt@Route - Event-Subscriber verwenden das
#[AsEventListener]-Attribut fuer die automatische Registrierung - Die minimale PHP-Anforderung ist jetzt 8.1, wobei 8.2+ empfohlen wird
Die gute Nachricht: Die meisten Hooks und das Modulsystem selbst bleiben abwaertskompatibel. Ihr hookDisplayHeader() funktioniert weiterhin. Aber wenn Ihr Modul Symfony-Services, Admin-Controller oder CQRS-Commands registriert – pruefen Sie diese sorgfaeltig.
Doctrine ORM ersetzt ObjectModel fuer den Core
Das ist die Aenderung, die die meisten Entwickler ueberrascht. Core-Entitaeten wie Product, Category und Customer werden jetzt ueber Doctrine verwaltet. Was das in der Praxis bedeutet:
- Direkte SQL-Abfragen gegen Core-Tabellen funktionieren weiterhin, aber die ORM-Schicht sieht Ihre Aenderungen moeglicherweise nicht sofort
- Der
Db::getInstance()-Ansatz funktioniert weiterhin fuer Ihre eigenen Modultabellen - Wenn Sie CQRS-Handler verwenden, die mit Core-Entitaeten interagieren, wechseln Sie zum Doctrine-Repository-Muster
- Legacy-
ObjectModel-Unterklassen fuer Core-Entitaeten sind als veraltet markiert
API Platform: Endlich echtes REST
PrestaShop 9 bietet eine richtige REST-API auf Basis von API Platform. Dies ersetzt den veralteten Webservice, der seit PrestaShop 1.5 existiert. Wichtige Verbesserungen:
- JSON:API-konforme Antworten mit richtiger Paginierung und Filterung
- OAuth 2.0-Authentifizierung mit eingeschraenkten Zugriffstokens
- OpenAPI-Dokumentation automatisch aus Entity-Metadaten generiert
- Benutzerdefinierte API-Ressourcen koennen von Modulen ueber Standard-API-Platform-Annotationen hinzugefuegt werden
Migrations-Checkliste fuer Modulentwickler
- Test auf PHP 8.1+ – entfernen Sie PHP-7.x-Kompatibilitaetscode
- Symfony-Services pruefen – stellen Sie sicher, dass Service-Definitionen mit Symfony 6.4 kompatibel sind
- CQRS-Handler ueberpruefen – wechseln Sie den Core-Entity-Zugriff auf Doctrine-Repositorys
- Admin-Controller aktualisieren – wenn Sie Symfony-Controller nutzen, migrieren Sie Annotationen zu Attributen
- Datenbankoperationen testen – pruefen Sie, ob direkte SQL-Abfragen auf Core-Tabellen neben dem ORM wie erwartet funktionieren
ps_versions_compliancyhinzufuegen – setzen Sie die Min-/Max-Version im Modul-Deskriptor, um PS9-Unterstuetzung anzuzeigen
Was gleich bleibt
Nicht alles aendert sich. Das Hook-System, Smarty-Templates fuer das Frontend, das Modul-Deskriptor-Format und die allgemeine Verzeichnisstruktur bleiben konsistent. PrestaShops Abwaertskompatibilitaetsversprechen bedeutet, dass die meisten gut geschriebenen Module mit minimalen Anpassungen funktionieren.
Die wichtigste Erkenntnis: Testen Sie frueh, aktualisieren Sie Ihre Service-Definitionen und setzen Sie auf Doctrine, wo es sinnvoll ist. PrestaShop 9 ist eine bessere Grundlage fuer die Zukunft – und Module, die die neuen Muster uebernehmen, sind langfristig einfacher zu warten.
Kommentare (8)
Kommentar hinterlassen