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.yml fonctionne 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 ObjectModel pour 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

  1. Tester sur PHP 8.1+ – supprimer tout code de compatibilite PHP 7.x
  2. Verifier vos services Symfony – s'assurer que les definitions de services sont compatibles avec Symfony 6.4
  3. Revoir les handlers CQRS – migrer l'acces aux entites principales vers les repositories Doctrine
  4. Mettre a jour les controllers admin – si vous utilisez des controllers Symfony, migrer les annotations vers les attributs
  5. Tester les operations de base de donnees – verifier que le SQL direct sur les tables principales fonctionne toujours comme prevu avec l'ORM
  6. 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.

Partager cet article:
David Miller

David Miller

Plus d'une décennie d'expertise pratique PrestaShop. David développe des modules e-commerce haute performance axés sur le SEO, l'optimisation du passage en caisse et la gestion de boutique....

Commentaires (8)

T
Thomas Mueller 14/02/2026
We just finished migrating our checkout module to PS9. The process was smoother than expected - most hooks work identically. The main pain point was updating our admin controllers from annotations to attributes.
Répondre
E
Elena Rodriguez 14/02/2026
Does anyone know if the hook system changes affect actionProductUpdate? We rely heavily on that hook for our inventory sync module.
Répondre
D
David Miller 14/02/2026
Elena, actionProductUpdate works the same way in PS9. The hook system is fully backwards-compatible. Your inventory sync module should be fine without changes.
J
Jakub Kowalski 14/02/2026
The migration checklist is super helpful. One thing I would add: test your cron jobs and CLI commands too. We found that some of our module console commands broke because of the Symfony 6.4 DI container changes.
Répondre
S
Sophie Laurent 14/02/2026
Great point about CLI commands Jakub! We had a similar issue with our import cron. The fix was updating the service injection in our console command class.
S
Sophie Laurent 14/02/2026
Finally someone explains the API Platform integration clearly. We have been struggling with the old webservice for years. The OAuth2 scoped tokens alone make the upgrade worth it.
Répondre
M
Marcus Weber 14/02/2026
Great overview of the PS9 changes! The Doctrine ORM migration is definitely the biggest challenge for us. We have about 15 modules that use ObjectModel extensively. Any tips on a gradual migration path?
Répondre
D
David Miller 14/02/2026
Thanks Marcus! For a gradual migration, I recommend starting with read-only Doctrine queries alongside your existing ObjectModel code. That way you can test without risk. Replace ObjectModel writes only after thorough testing.

Laisser un commentaire

Chargement...
Retour en haut