Module 1 : Advanced PHP & OOP
Nous sommes là pour vous aider
Vous avez des questions sur ce contenu ?
contact_support Posez-nous toutes vos questions1. Introduction
L’écosystème PrestaShop a drastiquement évolué. Avec les versions 8 et 9, l'architecture repose désormais fortement sur les standards modernes de PHP et de Symfony. Ce module se concentre sur les fondamentaux de la programmation orientée objet (OOP) et les fonctionnalités avancées de PHP 8.x.
L'objectif ? Vous permettre de développer des modules robustes, sécurisés et pérennes, en rompant définitivement avec les mauvaises pratiques du code legacy.
2. Concepts clés
Pour garantir la compatibilité et la maintenabilité de vos modules sur PrestaShop 8+, voici les piliers architecturaux à maîtriser :
-
Interfaces & Abstract Classes : L'architecture moderne de PrestaShop repose sur des contrats. Utiliser des interfaces permet de découpler votre code et de garantir qu'un service (ex: un système de paiement ou un exportateur de flux) respectera toujours les méthodes attendues par le Core, indépendamment de son implémentation.
-
Traits : Très utiles pour mutualiser du code transversal sans casser la chaîne d'héritage. Dans un module, les traits sont idéaux pour injecter des comportements réutilisables, comme le logging personnalisé ou la gestion du cache.
-
Namespaces (PSR-4) : Fini les classes fourre-tout à la racine du module. Votre logique métier doit être proprement structurée dans un dossier
/src, avec un namespace correspondant (ex:PrestaShop\Module\MonModule\Service). Le dossier racine est désormais réservé à l'amorçage du module (Hooks, installation) et au code legacy. -
Typage strict (PHP 8.x) : Les propriétés, les arguments et les retours de méthodes doivent être strictement typés (
int,float,string,bool, ou des objets spécifiques). -
Final Classes : L'utilisation du mot-clé
finalempêche l'héritage sauvage de vos classes métiers. C'est l'équivalent moderne pour empêcher les overrides foireux et garantir que votre logique métier ne sera pas altérée par un développeur tiers.
3. Pièges & bonnes pratiques
🚨 Les "Don'ts" (À bannir) :
-
Laisser des propriétés non typées : En PHP 8, ne pas typer une propriété est une porte ouverte aux bugs silencieux (ex: un identifiant produit traité comme une chaîne vide au lieu d'un entier).
-
Les overrides intempestifs : Surcharger les classes du Core (
/override) est une pratique révolue et extrêmement risquée pour les mises à jour. Préférez systématiquement l'utilisation des Hooks ou la décoration de services. -
Mélanger logique métier et legacy : Ne placez jamais vos classes de logique pure (Calcul de prix, synchronisation API) à la racine de votre module.
✅ Les Bonnes pratiques :
-
Pensez "Contrat" avant "Implémentation" : Si vous créez plusieurs transporteurs ou méthodes de paiement, créez d'abord une
interface. -
Verrouillez votre code : Déclarez vos classes métiers comme
finalpar défaut. Si quelqu'un a besoin d'étendre votre code, il devra utiliser la composition ou vous demander d'ouvrir proprement un point d'extension (via des events/hooks).
4. Mise en situation
Dans votre quotidien d'agence, vous êtes souvent amené à développer des modules qui interagissent avec des API externes. Comment structurer le service d'appel API, son système de log et s'assurer que personne ne viendra altérer cette logique métier critique ? C'est l'objet de notre exercice pratique sur GitHub !
👉 [Lien vers le repository GitHub du Module 1]