Bonjour,
Je cherche à modéliser proprement un site de e-commerce.
J'ai actuellement une classe Produit qui indique les détails d'un produit (idProduit, nom, description, marque) et de ses éventuelles déclinaisons (idDeclinaison, couleur, poids, tarif, stock).
Ma classe Produit est bien pratique pour afficher la fiche d'un produit et donc de ses déclinaisons disponibles, ainsi que pour lister les articles (et afficher par exemple le prix minimum de ce produit).
Par contre, je ne peux pas directement utiliser cette classe pour mon panier, puisqu'un produit est en soit quelque chose d'abstrait - il contient plusieurs déclinaisons avec des tarifs différents. C'est bien une déclinaison spécifique du produit que le client peut acheter.
Le problème est que je ne vois pas bien comment modéliser ça proprement.
En effet, je peux stocker l'ID de la déclinaison choisie, créer l'object Produit correspondant au produit dont cette déclinaison fait partie, puis afficher les infos à partir de méthodes spécifiques type $produit->GetTarifForDeclinaison($idDeclinaison), mais ça ne me semble un peu fastidieux et pas optimisé puisque j'aurai en mémoire des informations inutiles (les autres déclinaisons).
Une autre solution serait de créer une classe séparée Article qui elle correspondrait à un article "physique", contenant donc à la fois les infos générales du produit, et les infos de la déclinaison spécifique choisie par le client. Ca me semble plus convivial à utiliser puisqu'il n'y aura que les informations de l'article choisi par le client (donc par exemple $article->getTarif() sera suffisant), mais j'ai peur que ça soit un peu redondant par rapport à ma classe Produit, puisque les deux représentent en soit le même objet, mais de façon différente...
Qu'en pensez-vous?
Merci d'avance!
Partager