Le blog

PrestaShop migre vers Symfony !

Publié le 13 avril 2016

En 2012, la communauté du CMS open source Drupal décidait d’utiliser certains composants du framework PHP Symfony pour la mise en place de Drupal 8. Quelques mois plus tard, c’était au tour d’eZ Publish d’annoncer la migration de son socle technique vers Symfony 2 full stack pour sa cinquième version. Aujourd’hui, la solution e-commerce open source PrestaShop rejoint le mouvement : pour sa version 1.7, elle adoptera une nouvelle architecture basée sur Symfony 2.8.

Pourquoi Symfony ? #

Sur son blog, PrestaShop explique ce choix par la vétusté de son architecture actuelle, qui n’a pas réellement évolué depuis la version 1.5. L’utilisation de Symfony, leader mondial en matière de développement PHP, permettra d’obtenir un code plus solide, flexible et fiable. Elle maximisera également l’accessibilité de PrestaShop pour les développeurs PHP ne maîtrisant pas encore l’outil en réduisant la courbe d’apprentissage.

Une nouvelle architecture pour le back office #

Le basculement de PrestaShop vers Symfony ne prendra effet que dans le back office, plus précisément sur deux pages : Produits et Modules. L’architecture des autres pages du back office demeurera la même pour PrestaShop 1.7 puis migrera progressivement vers Symfony au fil des versions suivantes.

Templates : Twig rejoint Smarty #

Du côté des templates, il y aura aussi du nouveau puisque le moteur de templates de Symfony, Twig, viendra supplanter Smarty. Le changement s’appliquera dans un premier temps uniquement sur les pages Produits et Modules. Il s’étendra par la suite au reste du back office et ce, jusqu’à la disparition totale de Smarty.  

Pour l’heure, Prestashop 1.7 est toujours en cours de développement et la date de sortie de la première version stable n’a pas encore été communiquée. Il est néanmoins d’ores et déjà possible de télécharger et de tester la version alpha 3 de l’outil. La première version bêta devrait quant à elle être disponible prochainement. Encore un peu de patience !

Interview : Julien Martin, #

Core Developer chez PrestaShop #

Afin d’en savoir plus sur cette migration, nous avons interrogé Julien Martin, Core Developer chez PrestaShop. Il a très gentiment accepté de répondre à quelques questions, et nous l’en remercions !  

— Pourquoi avoir choisi de migrer plutôt que de repartir de 0 avec une nouvelle plate-forme ?

Aujourd’hui, PrestaShop compte plus de 600 fonctionnalités et toutes les re-développer prendrait un temps colossal et pas sans risque. De plus, repartir de zéro impacterait  notre communauté : tous les modules seraient à réécrire ! C'est pour cette raison que nous avons décidé de migrer au fur et à mesure sur Symfony en suivant les évolutions que propose notre équipe Produit, cela nous permet d'avancer en limitant les problèmes qui peuvent être liés à la compatibilité entre versions.

— Pourquoi avoir choisi Symfony ?

Notre slogan est "WeCommerce is better eCommerce" et dans le monde de l'Open Source, il est primordial d'impliquer les communautés. C'est pour cela que nous avons choisi Symfony, quasiment devenu un standard dans le monde de PHP. La communauté est très active, les composants sont constamment mis à jour et le tout en respectant parfaitement les bonnes pratiques de développement !

— Qu’est-ce que cela vous apporte ?

Notre métier n'est pas de maintenir un framework. Nous sommes là pour faire le meilleur outil eCommerce possible et consacrer la majeure partie de notre temps sur ce sujet. De plus, l'utilisation d'un framework tel que Symfony nous permet de développer plus sereinement sur le long terme en s'équipant d'un framework très structurant.

Cela ne veut pas dire que nous laisserons ce travail à la communauté Symfony, si jamais nous rencontrons un problème avéré sur Symfony, nous ferons en sorte de participer au projet, c'est comme cela que l'Open Source doit fonctionner !

Pour finir, tous les nouveaux développements sont faits selon les bons usages et sont testés unitairement, ce qui est aujourd'hui indispensable pour un projet digne de ce nom.

— Qu’est-ce que cela va apporter aux développeurs qui utilisent PrestaShop ?

PrestaShop fonctionne actuellement sur un framework maison assez ancien, parfois avec ses limites ! Le fait d'être sur Symfony permettra à tout le monde de s'y retrouver facilement, de travailler dans un terrain connu et sans avoir à apprendre tous les détails de PrestaShop. Les développeurs aussi n'auront pas à entretenir un framework, de fait ils pourront se concentrer sur le coeur du métier : l'eCommerce.

Les tests unitaires permettront aux développeurs de voir rapidement sur GitHub (via Travis) si leurs modifications ne détériorent en rien PrestaShop. Ils pourront ainsi proposer leurs modifications plus sereinement et ces dernières pourront être mergées beaucoup rapidement par notre équipe !

— Quid de la migration des modules et des données, comment seront-ils impactés ?

Nous nous devons de respecter au maximum la rétro compatibilité de PrestaShop, c'est pour cela que nous évoluons en même temps que le produit. Nous ne cassons la compatibilité que sur les versions majeures, et encore, le fonctionnel reste quasi inchangé. Mais étant donné que notre interface elle aussi évolue, il faudra sûrement que les modules s'adaptent.

Les données, elles, n'ont pas changé. La première étape étant de mettre en place la base de la nouvelle architecture, la faire communiquer avec l'ancienne architecture et de développer les nouvelles interfaces. Lorsque nous attaquerons les données, il faudra faire un choix : casser la compatibilité des tables impactées, fournir aux modules une API correcte afin qu'ils ne soient pas impactés par ces modifications ou effectuer une double écriture en base…

Un grand merci à toi d’avoir pris le temps de nous répondre. Il nous tarde de découvrir PrestaShop 1.7 !

Leslie Debaisieux

Mots-clésPrestaShop, Symfony, PHP, Open Source, Migration, Julien Martin

Le blog

Pour aller plus loin