[RESOLU] Diagramme de classe et pattern pour un site de ventes de voitures

Eléphant du PHP | 319 Messages

03 mars 2019, 20:50

Bonjour à tous,

Pourriez vous m'aider?
Comme indiqué je souhaiterais avec le framework symfony (entre autre pour m'entrainer) faire un site de vente de voitures.
Du coup ma première question, pour commencer l'ébauche de vos diagramme vous inspirez vous de modèles existants exemple google class diagramm cars? Avez vous quelques conseils afin de réussir son diagramme?
Pour les patterns dans mon cas je pensais utiliser le pattern factory. Avez vous un conseil pour que j'identifie le ou les patterns qui rendra le code plus scalable pour une application de vente de voiture? Car j'ai pu voir qu'il y a vraiment énormément de patten du coup je me demandais comment sélectionner.

Merci :)

Mammouth du PHP | 545 Messages

04 mars 2019, 16:42

bonjour,
quand on utilise un ORM, en l’occurrence doctrine ici, pour modéliser les classes on pense certes objet mais il ne faut pas perdre de vue que les tables générées doivent approximativement respecter la modélisation Entité/association de UML ou Mérise. Pour faire simple une entité doctrine(classe) est une représentation en mémoire d'une table de la BD. Les relations entre différentes entités indiquent comment tes tables seront liées entre elles: est-ce par clé étrangère, est-ce par table associative.
Par exemple une marque est constituée de plusieurs modèles de véhicules et plusieurs de ces modèles appartiennent à un type ou catégorie de véhicules(utilitaire, SUV, Citadine ...).
Un modèle(One) est composé de plusieurs images(Many) et plusieurs images(Many) peuvent appartenir à un modèle(One) . Un modèle peut fonctionner avec 1 ou plusieurs types d’énergie( donc oneToMany ou ManyToOne).
final class Marque {

/**
 * @var Modele[]|ArrayCollection
 * @ORM\OneToMany(  targetEntity="Modele" )
 */
private $modeles;
}

// ------ classe modèles
final class Modele {

/**
 * @var Marque
* @ORM\ManyToOne(targetEntity="Marque")
*/
private $marque;


/**
 * @var Categorie
* @ORM\ManyToOne(targetEntity="Categorie")
*/
private $categorie;
}


// ---- classe Categorie
final class  Categorie {


/**
 * @var Modele[]|ArrayCollection
 * @ORM\OneToMany( targetEntity="Modele" )
 */
private $modeles;
}
https://www.doctrine-project.org/projec ... irectional

Concernant les design patterns
- MVC : pas toujours indispensable pour tout type de projets (cas d'une API REST)
- Injection de dépendance
- Repository pattern: toutes les opération(CRUD) d'accès à la BD sont centralisées dans un repository
- observer

Doctrine 2 est basé sur le design pattern DataMapper. Ce design pattern vise à séparer les classes PHP aux méthodes d'accès à la BD.
Après faut-il utiliser le pattern factory , je n'en sais rien ça dépend de ton cas d'utilisation

L'application demo, exemple de mini-application (blog multilingue) liste un certain nombre de bonne pratiques.

Eléphant du PHP | 319 Messages

08 avr. 2019, 16:38

Super merci.