IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Fabrique d'objets et insertion database


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Par défaut Fabrique d'objets et insertion database
    Hello!

    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    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 produit
    on 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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    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éritage
    mais si je met un produit A il va y avoir un problème puisque il ne connaitra pas $product->getSpéciale_B() ou C.

    J'espère avoir été assé claire dans mon explication 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 requêtes 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éthodes 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.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Et donc product_B ou product_C égal NULL !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Par défaut
    Merci MaitrePylos ^^

    Si j'ai bien compris tu veux dire que de toutes façon si je passe un produit non spécialisé ca sera considéré comme null ?
    Parce qu'en effet c'est ce que je souhaiterais mais si c'est un produit généralisé je risque d'avoir une erreur comme quoi la méthode du produit spécialisé, est undifined.

    Qu'en pense tu ?

Discussions similaires

  1. [WD-2007] Insert Database & MergeFormat
    Par KisuX dans le forum VBA Word
    Réponses: 4
    Dernier message: 05/07/2012, 14h14
  2. Réponses: 24
    Dernier message: 26/08/2009, 09h38
  3. Probleme insertion database texte coupé
    Par marie49 dans le forum Word
    Réponses: 2
    Dernier message: 27/04/2009, 12h22
  4. Lien entre 2 objets et insert
    Par speechmill dans le forum Hibernate
    Réponses: 11
    Dernier message: 19/12/2007, 09h47
  5. Réponses: 3
    Dernier message: 19/11/2004, 21h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo