L’un des aspects-clé du travail sur une nouvelle version majeure, est que cela nous donne l’occasion de réfléchir à la manière dont les choses sont faites, de revoir nos processus, et de moderniser le code afin de maintenir la pertinence technologique de notre solution. La version 1.7 de PrestaShop est une étape majeure dans cette direction, comme cet article vous montrera. Notez que la grande majorité des informations présentées dans cet article est reprise d’articles déjà publié sur Build, le devblog de PrestaShop, que vous devriez visiter régulièrement afin d’y lire les dernières nouvelles en provenance de l’équipe de développement !
PrestaShop intègre désormais le framework Symfony
L’équipe de développement veut depuis longtemps repenser l’architecture du cœur de PrestaShop. L’idée première a toujours été de la rendre plus modulaire, plus testable, et bien sûr plus robuste. La version PrestaShop 1.6.1.0 était une première approche de cette idée. Mais l’équipe s’est rapidement rendue compte que réécrire notre framework interne ne suffisait pas : la meilleure manière d’avancer était d’utiliser ce que la communauté Open Source pouvait nous apporter.
PrestaShop 1.7 introduit Symfony2 dans son code cœur. Cette version majeure commence un grand virage du côté technique de la solution, virage qui sera négocié en douceur et sur le long terme : tout ne change pas avec la 1.7. L’introduction du framework a été décidée afin de se débarrasser à termes de la partie “faite maison” de la solution, et surtout de la charge de maintenance qui l’accompagne, qui prend une bonne partie du temps de développement et ne correspond fondamentalement pas à notre cœur de métier (gérer un panier, traiter des commandes, calculer des prix et taxes; générer des factures, etc.).
Utiliser un framework Open Source populaire et qui a fait ses preuves nous permettra de nous focaliser sur notre code métier avec plus d’efficacité, tout en profitant de la stabilité d’un outil reconnu mondialement.
Les prérequis PHP passent à la version 5.4
L’équipe de développement fait son possible pour que PrestaShop puisse tourner sur un hébergement à bas prix dans une contrée lointaine, ce qui explique l’effort pour rester compatible avec PHP 5.2 -- une version qui n’est plus maintenue depuis Janvier 2011. En juin 2015, il a été décidé de passer à PHP 5.4 comme version minimum pour faire tourner PrestaShop. Nous aurions pu passer à la version 5.5 ou même 5.7, mais ces versions n’étaient alors disponibles que chez trop peu d’hébergeurs. Passer à PHP 5.4 nous permet d’intégrer de nouveaux outils :
- Composer.
- Les espaces de noms.
- Closure et les fonctions anonymes.
- De nouvelles syntaxes alternatives.
Notez que PrestaShop 1.7 est par ailleurs compatible avec PHP 7 !
Nouvelles normes de développement
Le code de PrestaShop est passé de nos propres normes à PSR-2 en juillet 2015. Depuis lors, nous avons décidé d’intégrer le framework Symfony au code. Quoi de plus naturel alors que de suivre leurs propres normes ? Elles complètent les normes PSR (PSR-0, PSR-1, PSR-2 et PSR-4).
Quelques règles notables :
- Utilisez du camelCase, pas_des_soulignés, pour les noms de variables de fonction, de méthodes et d’arguments.
- Les conditions Yoda vous devriez utiliser.
- Ajoutez une virgule après chaque élément d’un tableau (array) multiligne, même après le dernier. Et parce que PrestaShop ne se limite pas à PHP, nous avons adopté des normes pour nos autres langages :
- JavaScript : nous avons choisi d’utiliser le Airbnb JavaScript Style Guide, qui est très détaillé et bien documenté.
- CSS & HTML : nous avons décidé de suivre les normes de Bootstrap 4. ○ Utilisé également pour le code Smarty / Twig. Nous avons créé un fichier EditorConfig afin de vous aider ! Il se trouve à la racine du dépôt PrestaShop : vous pouvez le télécharger ici. Il vous sera particulièrement utile pour gérer les différentes tailles de tabulation en fonction du type de fichier.
Nouvelle documentation pour les développeurs
Historique, l’ensemble de la documentation de PrestaShop était hébergée sur https://doc.prestashop.com/, propulsé par le système de wiki Confluence d’Atlassian. Il nous est apparu qu’il n’était pas idéal pour notre communauté de développeurs : il n’est pas possible de contribuer facilement (il vous faut demander la création d’un compte), le design est dépassé, il faut trop de clics pour arriver à une information, etc.
Nous avons décidé de placer notre documentation technique sur un autre système. Aujourd’hui, la documentation utilisateur est disponible sur le site habituel, et le nouveau site sert simplement à la documentation technique pour la 1.7 (thèmes et modules) :
- Guides utilisateurs 1.4 à 1.7 et doc technique 1.4 à 1.6 : https://doc.prestashop.com/
Doc technique 1.7 : https://devdocs.prestashop.com/ Étant donné que ce sont des fichiers texte, ils sont versionnés sur Git et hébergés GitHub. Quelle meilleure manière de vous donner la possibilité de contribuer, chers développeurs ? :) Ouvrez une pull request pour corriger ou ajouter quelque chose. Vous pouvez également nous notifier d’un problème si vous souhaitez voir apparaître une documentation spécifique. Par exemple : “how to use the new product page hooks”, ou “how to use the theme template in a module”.
Cliquez ici pour en savoir plus sur PrestaShop 1.7.