PrestaShop 9 est le plus grand saut architectural depuis la serie 1.7. Sous le capot, la plateforme a migre vers Symfony 6.4 LTS, remplace les modeles legacy ObjectModel par Doctrine ORM pour les entites principales et introduit une veritable API REST basee sur API Platform. Si vous maintenez des modules, ces changements comptent – et se preparer maintenant vous evitera une course contre la montre plus tard.
Le passage a Symfony 6.4
PrestaShop 9 est livre avec Symfony 6.4, ce qui signifie plusieurs choses pour les developpeurs de modules :
- Les definitions de services doivent utiliser les nouvelles conventions d'autowiring – l'ancienne approche
services.ymlfonctionne encore mais est obsolete - Les annotations de controllers sont remplacees par des attributs PHP 8 –
#[Route]au lieu de@Route - Les event subscribers utilisent l'attribut
#[AsEventListener]pour l'enregistrement automatique - La version minimale de PHP requise est desormais 8.1, avec 8.2+ recommande
La bonne nouvelle : la plupart des hooks et le systeme de modules restent retro-compatibles. Votre hookDisplayHeader() fonctionne toujours. Mais si votre module enregistre des services Symfony, des controllers admin ou des commandes CQRS – examinez-les attentivement.
Doctrine ORM remplace ObjectModel pour le coeur
C'est le changement qui surprend la plupart des developpeurs. Les entites principales comme Product, Category et Customer sont desormais gerees via Doctrine. Ce que cela signifie en pratique :
- Les requetes SQL directes sur les tables principales fonctionnent toujours, mais la couche ORM peut ne pas voir vos modifications immediatement
- L'approche
Db::getInstance()reste fonctionnelle pour vos propres tables de modules - Si vous utilisez des handlers CQRS qui interagissent avec les entites principales, passez au pattern Doctrine Repository
- Les sous-classes legacy
ObjectModelpour les entites principales sont marquees comme obsoletes
API Platform : enfin un vrai REST
PrestaShop 9 expose une veritable API REST construite sur API Platform. Cela remplace le vieillissant webservice present depuis PrestaShop 1.5. Ameliorations cles :
- Reponses conformes JSON:API avec pagination et filtrage corrects
- Authentification OAuth 2.0 avec tokens d'acces a portee limitee
- Documentation OpenAPI auto-generee a partir des metadonnees des entites
- Les ressources API personnalisees peuvent etre ajoutees par les modules via les annotations standard API Platform
Checklist de migration pour les developpeurs de modules
- Tester sur PHP 8.1+ – supprimer tout code de compatibilite PHP 7.x
- Verifier vos services Symfony – s'assurer que les definitions de services sont compatibles avec Symfony 6.4
- Revoir les handlers CQRS – migrer l'acces aux entites principales vers les repositories Doctrine
- Mettre a jour les controllers admin – si vous utilisez des controllers Symfony, migrer les annotations vers les attributs
- Tester les operations de base de donnees – verifier que le SQL direct sur les tables principales fonctionne toujours comme prevu avec l'ORM
- Ajouter
ps_versions_compliancy– definir la version min/max dans le descripteur de module pour indiquer le support PS9
Ce qui ne change pas
Tout ne change pas. Le systeme de hooks, les templates Smarty pour le front-office, le format du descripteur de module et la structure generale des repertoires restent coherents. La promesse de retro-compatibilite de PrestaShop signifie que la plupart des modules bien ecrits fonctionneront avec des ajustements minimaux.
L'essentiel a retenir : testez tot, mettez a jour vos definitions de services et adoptez Doctrine la ou c'est pertinent. PrestaShop 9 est une meilleure fondation pour le long terme – et les modules qui adoptent les nouveaux patterns seront plus faciles a maintenir.
Commentaires (8)
Laisser un commentaire