PrestaShop 9 e il piu grande salto architettonico dalla serie 1.7. Sotto il cofano, la piattaforma e passata a Symfony 6.4 LTS, ha sostituito i pattern legacy ObjectModel con Doctrine ORM per le entita principali e ha introdotto una vera API REST basata su API Platform. Se mantieni moduli, questi cambiamenti contano – e prepararsi ora ti evita una corsa frenetica in seguito.
Il passaggio a Symfony 6.4
PrestaShop 9 viene fornito con Symfony 6.4, il che significa diverse cose per gli sviluppatori di moduli:
- Le definizioni dei servizi devono usare le nuove convenzioni di autowiring – il vecchio approccio
services.ymlfunziona ancora ma e deprecato - Le annotazioni dei controller sono sostituite dagli attributi PHP 8 –
#[Route]invece di@Route - Gli event subscriber usano l'attributo
#[AsEventListener]per la registrazione automatica - Il requisito minimo di PHP e ora 8.1, con 8.2+ raccomandato
La buona notizia: la maggior parte degli hook e il sistema dei moduli stesso rimangono retrocompatibili. Il tuo hookDisplayHeader() funziona ancora. Ma se il tuo modulo registra servizi Symfony, controller admin o comandi CQRS – esaminali attentamente.
Doctrine ORM sostituisce ObjectModel per il core
Questo e il cambiamento che coglie di sorpresa la maggior parte degli sviluppatori. Le entita principali come Product, Category e Customer sono ora gestite tramite Doctrine. Cosa significa in pratica:
- Le query SQL dirette sulle tabelle principali funzionano ancora, ma il layer ORM potrebbe non vedere le tue modifiche immediatamente
- L'approccio
Db::getInstance()e ancora funzionale per le tue tabelle di modulo - Se usi handler CQRS che interagiscono con le entita principali, passa al pattern Doctrine Repository
- Le sottoclassi legacy
ObjectModelper le entita principali sono marcate come deprecate
API Platform: finalmente un vero REST
PrestaShop 9 espone una vera API REST costruita su API Platform. Questo sostituisce il vecchio webservice presente da PrestaShop 1.5. Miglioramenti chiave:
- Risposte conformi JSON:API con paginazione e filtraggio corretti
- Autenticazione OAuth 2.0 con token di accesso con scope limitato
- Documentazione OpenAPI auto-generata dai metadati delle entita
- Le risorse API personalizzate possono essere aggiunte dai moduli usando le annotazioni standard di API Platform
Checklist di migrazione per sviluppatori di moduli
- Testare su PHP 8.1+ – rimuovere il codice di compatibilita PHP 7.x
- Controllare i servizi Symfony – assicurarsi che le definizioni dei servizi siano compatibili con Symfony 6.4
- Rivedere gli handler CQRS – migrare l'accesso alle entita principali ai repository Doctrine
- Aggiornare i controller admin – se usi controller Symfony, migrare le annotazioni agli attributi
- Testare le operazioni sul database – verificare che le query SQL dirette sulle tabelle principali funzionino come previsto accanto all'ORM
- Aggiungere
ps_versions_compliancy– impostare la versione min/max nel descrittore del modulo per indicare il supporto PS9
Cosa resta uguale
Non tutto cambia. Il sistema di hook, i template Smarty per il front-office, il formato del descrittore del modulo e la struttura generale delle directory rimangono coerenti. La promessa di retrocompatibilita di PrestaShop significa che la maggior parte dei moduli ben scritti funzionera con aggiustamenti minimi.
Il punto chiave: testa presto, aggiorna le definizioni dei servizi e adotta Doctrine dove ha senso. PrestaShop 9 e una base migliore per il lungo termine – e i moduli che abbracciano i nuovi pattern saranno piu facili da mantenere.
Commenti (8)
Lascia un commento