Les meilleures pratiques pour développer une extension
Ca y est, Magento 2 est bel et bien lancé ! La marketplace est en place, et déjà les premières extensions se vendent.
Mais ce n’est pas sans compter les phases de soumissions strictes qu’impose Magento avant de pouvoir publier la sienne.
En effet, cette nouvelle version majeure s’accompagne d’une nouvelle philosophie, qui prône les standards, les conventions et les bonnes pratiques. Magento 2 se veut plus mature et ne veut s’adresser qu’aux professionnels. C’est ainsi que le nouveau certificat “Trained Solution Partner” voit le jour. Exclusivement pour Magento 2 et les détendeurs de la certification “Solution Partner”, ce programme est une formation sur les meilleures pratiques et comment développer une extension Magento 2 dans les normes.
Dites adieu aux scripts un peu douteux, et dites bonjour au beau code !
I - En mode développeur pour coder, tu seras !
Rien de plus naturel que d’activer le mode développeur, pour développer son extension ! Le mode développeur désactivera automatiquement le cache des fichiers statiques, activera la compilation automatique du code et rendra le déboguage plus simple et visible. Pour cela tapez la commande suivante :
php magento deploy:mode:show pour voir le mode courant
php magento deploy:mode:set developer pour activer le mode développeur
Si vous utilisez un serveur apache sous Windows et que vous avez les problèmes suivants :
-
la vue ne s’affiche pas correctement
-
le css et le js ne sont pas chargés
Essayez d’ajouter les lignes suivantes, dans le .htaccess situé dans le répertoire suivant : <Magento2Root>/pub/static/ :
"RewriteBase /pub/static/" après le RewriteEngine On
Attention, n’activez le mode développeur que pour vos développements. Celui-ci provoque des ralentissements et baisse considérablement les performances.
II - Les standards et les conventions PSR, tu respecteras !
Vous l’aurez compris, impossible de passer à côté des différentes PSR, conventions et standards avec Magento 2 !
Voici une petite liste exhaustive de ce que vous aurez à respecter :
-
PSR-1 “Basic Coding Standard”
-
PSR-2 “Coding Style Guide”
-
PSR-3 “Logger Interface”
-
PSR-4 “Autoloader”
III - L’injection de dépendances, tu utiliseras !
L’instanciation directe de classe n’est pas recommandée, la classe que vous voulez utiliser est peut-être surchargée par le DI de Magento 2. En effet, la classe instanciée directement ne prend pas en compte les surcharges déclarées dans le di.xml. C’est pourquoi il est primordial d’utiliser l’injection de dépendances. De plus, elle permet de découpler votre code, en évitant les inter-dépendances fortes entre vos classes. Votre code devient réutilisable et peut être utilisé comme un “service”.
IV - Moins d’héritage et plus de composition, tu envisageras !
La philosophie entre Magento 1 et Magento 2 a radicalement changé sur ce sujet. Alors que dans la 1ère version, l’héritage de classe est encouragé, il est délaissé pour la composition de classe dans sa nouvelle version. Mais pourquoi ce changement soudain ? Cela vient d’un constat fait par l’équipe technique de Magento. Il s’avère que la composition est bien plus simple à maintenir en cas de modification d’une classe ou lorsqu’une fonctionnalité est mise à jour.
Cependant, nous pourrions nous demander ce qu’il en est des “trait” dans Magento 2...
V - Les fonctions du framework, tu utiliseras !
Certaines fonctions natives de PHP sont implémentées par le framework de Magento 2. Il est donc indispensable de les utiliser pour faire face aux éventuelles failles. Vous pourrez retrouver toutes les fonctions qu’il ne faut plus utiliser dans cette liste. Il en est de même pour les variables supers globales de PHP telles que $GLOBALS, $_SERVER, $_GET, $_POST, $_FILES, $_COOKIE, $_SESSION, $_REQUEST, $_ENV. Vous pourrez trouver les équivalents de celles-ci depuis cette classe : Magento\Framework\HTTP\PhpEnvironment\Request
VI - Le Magento Code Sniffer Coding Standard, tu éxécuteras !
Quoi de mieux qu’un outil pour vérifier que toutes les règles énoncées précédemment ont bien été respectées ? Cet outil, basé sur PHP Code Sniffer, va automatiquement vérifier que votre code ne contient pas d’erreurs et qu’il respecte les différentes normes de Magento 2.
Vous en tirez le bénéfice d’avoir un code qui correspond aux standards Magento 2 et qui passera facilement la phase de la revue technique. Cela a simplement comme but de créer du code compréhensible par tous, et donc plus facilement maintenable !
Pour utiliser le Magento Code Sniffer Coding Standard Tool, veuillez suivre ces instructions.
VII - Des tests unitaires, tu écriras !
Si vous êtes un habitué du test-driven-development (TDD), les tests unitaires n’ont certainement plus aucun secret pour vous ! Si vous n’en faites pas, dites vous simplement que Magento 2 favorise les extensions qui en possèdent. Non seulement cela garantit la non-régression du code et vas vous forcer à mener une réflexion approfondie durant votre analyse, mais cela va accroître la confiance des développeurs qui utiliserons votre extension. En effet, il s’agit d’un gage de qualité et prouve que l’aspect fonctionnel de votre extension est testé dans sa globalité.
VIII - Utiliser les menus existants, tu feras !
Sur ce point Magento 2 est intransigeant ! Les extensions devront se ranger dans les menus existants. Exit donc les entrées multiples dans le niveau 1 du menu, comme on pouvait voir sur Magento 1. Ce qui veut dire que votre extension doit être catégorisée de manière à respecter la navigation de Magento 2 pour ne pas perdre l’utilisateur. Ainsi, si vous développez une extension sur les produits, celle-ci sera rangée dans le menu “PRODUCTS”. Cependant, si votre extension est exclusive et qu’elle implémente quelque chose de tout à fait nouveau, elle sera rangée dans une section spécialement prévue à cet effet. Cependant, le nom et l'icône pour cette section ne sont toujours pas définis par Magento.
IX - L’Admin Style Guide, tu respecteras !
Magento 2 impose son style ! Une liste de règles précise les formats que vous devrez utiliser, dont la typographie, l’iconographie, les grilles du layout et la palette de couleurs. Magento 2 veut uniformiser le style du Backend afin de former un ensemble homogène.
X - Attentif au responsive design, tu seras !
Ne négligez pas les utilisateurs mobiles ! De plus en plus de clients commencent leurs achats depuis un mobile. C’est pourquoi vous devez tout miser sur le responsive design. Si un visiteur se rend sur votre page et qu’elle est trop longue à charger, pas adaptée ou illisible sur son smartphone (ou bien sur sa tablette), vous pouvez être certain qu’il ne reviendra plus sur votre site.
En évitant ces mauvaises expériences, vous augmenterez non seulement votre taux de conversion mais aussi votre trafic !
Magento 2 a pensé à tout et a prévu pour vous une section pour vous guider au mieux dans la réalisation de votre thème responsive, ne le négligez pas.
Désormais, tu ne pourras plus dire que tu ne savais pas !