Explorer Magento avec nWIRE

Magento est un bien joli projet qui peut maintenant servir de cas d’école pour les élèves ingénieurs. Son architecture objet complexe mais extensible offre un degré de personnalisation rarement vu dans une solution e-commerce.

Cependant, avoir une vision globale ou comprendre le comportement précis d’un module reste un exercice ardu. Surtout sans documentation de référence…

Heureusement, il existe toujours un outil fabuleux pour nous sauver la mise et, sur ce coup, c’est nWIRE for PHP qui s’y colle. Avec talent.

nWIRE analyse le code PHP et en extrait tous les composants et associations. Intégré à Eclipse, il offre une vue précise des éléments du code source, notamment sur des architectures purement objet comme Magento. Les grincheux vont me dire que l’UML est fait pour ça et que PHPDocumentor nous sort ces informations. Sauf que personne n’a réussi à le faire pour Magento, alors que nWIRE le fait en temps réel pendant le développement. Petit tour d’horizon.

Que fait nWIRE ?

nWIRE commence par analyser votre espace de travail pour indexer les éléments du code source et créer sa propre base d’informations. Chaque détail du code compte : déclaration de méthode, surcharge, invocation, instanciation, interface, sous-classes, commentaires normés, etc.

L’analyse en tâche de fond apporte un réel confort lors du développement (à condition d’avoir une machine qui supporte la lourdeur d’Eclipse…).

Un navigateur intuitif

Une fois l’analyse terminée, nWIRE Navigator prend le relais pour afficher toutes les informations qu’il possède sur un fichier ouvert. L’affichage s’adapte à la position du curseur dans le code, on obtient donc des informations contextuelles.

Le Navigator est bien sûr navigable. On peut facilement explorer les liens vers d’autres blocs de code appartenant à d’autres fichiers. Ceux-ci s’ouvriront à la volée dans Eclipse.

Le comportement est paramétrable, on peut alors se focaliser sur certains résultats pour éviter d’être noyé dans la masse d’informations.

Les schémas en prime

Des textes, c’est bien, mais un dessin, c’est mieux ! nWIRE Visualizer peut donc créer un graphique des relations, à partir de la sélection faite dans le navigateur. Cerise sur le gâteau, ce graphique n’est pas figé mais navigable, lui aussi !

La recherche n’est pas oubliée

Avoir un tel outil sans moteur de recherche serait une aberration. Donc il existe… et il est efficace ! Plus rapide et plus adaptée que celui d’Eclipse (Ctrl + H). De plus, il gère la complétion automatique afin de proposer des résultats, même quand vous ne connaissez pas bien les composants applicatifs.

En pratique, ça donne quoi ?

Commençons par un premier exemple. Je souhaite comprendre l’architecture du modèle de gestion des produits du catalogue.

J’ouvre le fichier app/code/core/Mage/Catalog/Model/Product/Type/Abstract.php.

nWIRE me donne les premières informations sur ce fichier qui contient la classe Mage_Catalog_Model_Product_Type_Abstract.

Si j’ouvre le contenu de cette classe, j’obtiens la liste des propriétés et méthodes avec un focus dans le code source du fichier ouvert. Ici, la méthode getSku() est sélectionnée.

Plus intéressant, je souhaite savoir quelles sont les sous-classes de Mage_Catalog_Model_Product_Type_Abstract. J’obtiens les types de produits Magento : Simple, Configurable, Grouped, Virtual, Bundle.

Tiens ? Au passage, on voit de suite que les produits de type Bundle sont gérés par un module spécifique. Voilà un cas particulier détecté en 5 secondes !

La première découverte étant faite, je souhaite la partager avec mes collègues. Un beau schéma ferait bien l’affaire.

Le premier essai n’est pas idéal. Aucun filtre n’est appliqué et le résultat est trop confus.

Après un petit passage dans les filtres, c’est nettement mieux ! J’ai ce qu’il me faut.

Si je navigue dedans, je peux avoir certains détails, comme ici les méthodes qui retournent l’objet sélectionné dans l’ensemble du code Magento. Très précieux pour comprendre certains comportements.

Autre exemple autour de la recherche : à quel moment Magento dispatche les événements ? On active le moteur de recherche, mot-clé dispatchEvent et c’est parti.

Parmi les entrées retournées (en moins d’une seconde, les habitués au moteur de recherche d’Eclipse apprécieront), la méthode Mage::dispatchEvent() m’intéresse. Je la sélectionne et nWIRE ouvre le fichier qui contient cet élément. J’ai donc une vision claire du traitement des événements.

Mais ce qui m’intéresse, c’est de savoir où est utilisée cette méthode dans Magento, je vais donc chercher son invocation. nWIRE me propose le lien Invoked by. J’obtiens immédiatement les 216 appels à cette méthode dans Magento.

Je n’ai plus qu’à vérifier que ces appels sont bien placés… ce qui n’est malheureusement pas le cas partout. nWIRE est donc aussi outil de déboguage efficace pour Varien !

Conclusion

C’est le genre d’outils payants (59 $) qui est rentabilisé dans la journée. Je travaille avec depuis une quinzaine de jours et j’avoue que ma compréhension de certaines subtilités (ou défauts) de Magento s’en trouve transformée. Indispensable dans la palette d’outils du développeur Magento.

Avertissement !
Cet article est très ancien et son contenu peut s'avérer obsolète.

Commentaires

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *