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

Langage PHP Discussion :

[POO] Ajouter des attributs dans le constructeur


Sujet :

Langage PHP

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 115
    Points : 120
    Points
    120
    Par défaut [POO] Ajouter des attributs dans le constructeur
    Bonjour,

    j'essaie actuellement de faire une classe maison pour manipuler une table mySQL comme un objet.

    Mon but est lorsque je crée un objet, je parcours la structure de la table et je crée autant d'attributs (ou variables d'instances) que ma table contient de champ. C'est super pratique quand le developpement et en cours est que la table subit des modifs de structure...

    Par contre en production je compte mettre ces champs dans un array , histoire d'eviter la requete pour obtenir les champs (SELECT COLUMN_NAME AS nom FROM INFORMATION_SCHEMA.COLUMNS...)

    Comment faire pour déclarer de nouveaux attributs dans le constructeur ? dans mon cas dans une boucle (mysql_fetch_array en dev et foreach en prod)

    Merci d'avance !

    Alex

  2. #2
    Membre actif Avatar de Mogwaï
    Inscrit en
    Mai 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2004
    Messages : 247
    Points : 278
    Points
    278
    Par défaut
    Citation Envoyé par Al3x Voir le message
    Comment faire pour déclarer de nouveaux attributs dans le constructeur ?
    Qu'entends-tu par là ?
    Les attributs appartiennent à la classe, pas au constructeur... Peut-être voulais-tu parler des paramètres du constructeur ?

    As-tu un bout de code à nous montrer ?
    Etre à son compte, y'a rien de mieux !

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    j'essaie actuellement de faire une classe maison pour manipuler une table mySQL comme un objet.
    Avant de réinventer la roue, est-ce que tu as cherché à savoir si une bibliothèque préexistante ne répondrait pas déjà à tes besoins ?


    Comment faire pour déclarer de nouveaux attributs dans le constructeur ?
    Je ne crois pas que ça soit possible, PHP n'est pas très avancé en terme de meta-programmation. Par contre, tu peux facilement obtenir le même effet en utilisant les méthodes magiques __get() et __set() et un tableau
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 115
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par winloto Voir le message
    Qu'entends-tu par là ?
    Les attributs appartiennent à la classe,
    tout a fait et c'est bien la mon problème, je veux lors de l'execution du constructeur ajouter à ma classe autant d'attributs que ma table contient de champ le code n'est pas ecrit mais dans la vue de mon esprit torturé et fatigué donnerai un truc comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    function MaClasse() { ;
     
    		sql::init(); // Methode static da ma classe sql pour initialiser
     
    		$members = Array() ;
     
    		$SQL = 'SELECT COLUMN_NAME AS nom FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = "'.self::$table.'"' ;
     
    		$result = mysql_query($SQL);
     
    		while ( $row = mysql_fetch_array($result)){ 
    			if ($row['nom'] != 'created') {
    				array_push(self::$members, $row['nom']) ;
    				$this->$row['nom']=''   ; // C'est ici que je voudrait ajouter des attributs....
    			}	
    		} 
     
    		sql::close() ; // pour fermer
     
     
    	}

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 115
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par Taum Voir le message
    Salut,


    Avant de réinventer la roue, est-ce que tu as cherché à savoir si une bibliothèque préexistante ne répondrait pas déjà à tes besoins ?


    Je ne crois pas que ça soit possible, PHP n'est pas très avancé en terme de meta-programmation. Par contre, tu peux facilement obtenir le même effet en utilisant les méthodes magiques __get() et __set() et un tableau
    en bon fainéant bien sur que j'ai regardé mais c'est souvent des usines à gaz et j'ai envie d'utiliser un truc que je comprends à 100% c'est pour ca que je suis en train de me faire un classe

    je vais jetter un oeil du coté de __get(); et __set(); merci !!

  6. #6
    Membre actif Avatar de Mogwaï
    Inscrit en
    Mai 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2004
    Messages : 247
    Points : 278
    Points
    278
    Par défaut
    Ceci ne répondrait-il pas à ta demande ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while ...... {
      $this->$row['nom'] = NULL;
    }
    Ca permettrait d'initialiser chaque champ/attribut à NULL
    Etre à son compte, y'a rien de mieux !

  7. #7
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 115
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par winloto Voir le message
    Ceci ne répondrait-il pas à ta demande ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while ...... {
      $this->$row['nom'] = NULL;
    }
    Ca permettrait d'initialiser cache champ/attribut à NULL
    voila qui me semble plus propre que mon $this->$row['nom'] ='' ;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [W3C] Ajout des paramètres dans l'attribut action d'un formulaire
    Par anaranjado dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 15/04/2010, 13h24
  2. [POO] ajouter des données dans un tableau contenant une structure
    Par Peanut dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/02/2009, 18h41
  3. Ajouter des attributs personnalisés dans un schéma XSD
    Par hollywood dans le forum Services Web
    Réponses: 0
    Dernier message: 24/09/2008, 10h55
  4. Ajouter des attributs personnalisés dans un schéma XSD
    Par hollywood dans le forum Services Web
    Réponses: 0
    Dernier message: 24/09/2008, 10h47
  5. Ajouter des contrôles dans la palette des contrôles.
    Par WOLO Laurent dans le forum MFC
    Réponses: 4
    Dernier message: 22/01/2004, 08h27

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