J'ai un j'ai un formulaire qui propose d'ajouter un produit standard avec un choix de type dans une select list !
mais en fonction des choix fais par l'utilisateur, cela ajoute des caractéristiques à ajouter en plus au produit standard
exemple des vêtement la taille !
donc j'ai fais une table MYSQL qui permet d'inséré quelque soit le type de produit ! (taille, poid)
J'ai fais une class Product (Pour le standard) puis j'étends cette class pour les produits plus spécialisé...
mon problème est dans l'insertion des ces produits dans la base !
En fonction du choix de l'utilisateur je construit mon produit exemple :
class ProductFactory
{
public static function buildProduct($type)
{
if(!class_exists($type))
{
return throw ProductExeception("affiche l'erreur");
}
return new $type();
}
Ensuite je récupère mon objet puis je lui met les méthodes de base commun à chaque produiton va dire que j'ai class mere A puis une sous-class B qui hérite de A et une sous-class C qui elle même hérite de B et de A
pour l'insert je créer une méthode save pour sauvegarder le product !
si je fais :
public function save(Product $product)
{
$sql = "INSERT INTO matable (id, name, date, spécial_B, spécial_C)
VALUES ($product->getId(), $product->getName(), $product->getSpécial_B(), $product->getSpécial_C());
}
si je met dans la méthode save() un produit spécialisé B ou C il le prendra puisque C ou B est A par définition à l'héritagemais si je met un produit A il va y avoir un problème puis que il ne connaitera pas $product->getSpéciale_B() ou C !
J'espère avoir été assé claire dans mon éxplication lol
Donc je voudrais savoir si je me complique pas la vie pour rien et si une autre méthode serais préférable !
Le but étant de dupliquer du code pour rien !
de plus j'utilise PDO donc je fais aussi des requetes préparer et j'utilise un tableau pour les marqueur de type (:id, :name) et je créer un méthode params pour éviter
d'avoir à dupliquer mon tableau pour les méhtodes updates etc
je me suis dit aussi que je pouvais utilisé instanceof pour vérifier si c'est une instance de B ou de C pour ajouter les méthodes !
J'ai aussi pensé à étendre la fabrique pour chaque spécialisation mais ca me parais un peu lourd !
Je pense qu'il y'a plus simple donc j'en appel à votre sens de la logique pour m'éclairer !