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] [PHP 4.4.X] Nom d'une propriété de classe


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Billets dans le blog
    3
    Par défaut [POO] [PHP 4.4.X] Nom d'une propriété de classe
    Bonjour,

    Voilà un problème que je n'arrive pas à résoudre :

    comment à partir de $this->nom je peux obtenir 'nom' ?

    concrètement, dans mon appli j'ai un tableau comme ceci :
    $tab = array($this->nom, $this->prenom ..)

    Comment en faisant une boucle sur $tab je peux obtenir :
    $nom
    $prenom
    ...

    Merci pour vos réponses,

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 346
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 346
    Billets dans le blog
    17
    Par défaut
    On ne peut pas, mais tu peux sans doute aborder ton problème différemment en faisant...

    - l'inverse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $a = array('nom', 'prenom') ;
    foreach ( $a as $property ) {
        echo $property, ' : ', $this->{$property}, '<br>' ;
    }
    - ou en te servant d'une clef :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $a = array('nom' => $this->nom, 'prenom' => $this->prenom) ;
    foreach ( $a as $property => $value ) {
        echo "$property : $value <br>" ;
    }

  3. #3
    Membre extrêmement actif
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Billets dans le blog
    3
    Par défaut
    Ouais je connais ces méthodes... Putin c'est dommage quand même !!

    Et en PHP5 on peut le faire ça ? récupérer le nom de propriétés ?

    Merci pour ton aide

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 346
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 346
    Billets dans le blog
    17
    Par défaut
    Non, impossible en PHP5 également.

  5. #5
    Membre extrêmement actif
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Billets dans le blog
    3
    Par défaut
    Ok merci des renseignements.
    A+, je clos le sujet.

  6. #6
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Salut,

    Si tu souhaites parcourir les propriétées / méthodes d'un objet sans le connaitre tu peux utiliser la reflection.

    http://fr.php.net/manual/fr/language.oop5.reflection.php.

    Mais bon tu n'exprimes pas ce que tu souhaites en faire, donc personne ne peut te proposer de solution peut être plus idéale.

    bye

  7. #7
    Membre extrêmement actif
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Billets dans le blog
    3
    Par défaut
    J'ai développé en php4 mon abstraction à la base de données... Le problème est avec la requête UPDATE. Exemple :

    dans la base de données j'ai une table : MA_TABLE avec ID, NOM, PRENOM, ADRESSE, EMAIL

    seulement pour une raison X ou Y, sur un update, je ne vais pas avoir besoin de mettre à jour tous les champs, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $matable = new MA_TABLE(); // classe héritée
    $matable->NOM = "Durant";
    $matable->PRENOM = "Jean";
     
    // et la j'appelle ma méthode de modif, avec un id en paramètre :
    $matable->modifier(1);
    Evidemment la méthode modifier parcourt TOUTES les propritétés de la classe MA_TABLE (qui correspond donc aux colonnes dans la base) pour construire les SET de la requête UPDATE.
    Et c'est pas bon, puisque EMAIL et ADRESSE ne sont pas affecté, donc il va leur attribuer une valeur vide... Ce qui est faux.

    En résumé, je voulais donc "vérifier" les propriétés affectés et fabriquer les SET uniquement avec elles.

    Vala, tu sais tout :o

  8. #8
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Ok.

    alors pour cela le plus simple est de positionner des valeurs à NULL lors de l'appel au constructeur.

    En somme regarde ceci
    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
    23
    24
    25
    26
    27
    28
     
    class Toto
    {
    var $Nom;
    var $Prenom;
    function Toto()
    {
    $this->Nom = NULL;
    $this->Prenom = NULL;
    }
    function Update()
    {
    $Sql = "blah blah";
    if($this->Nom !== NULL)
    {
    $Sql .=" `nom` = '".$this->Nom."'";
    }
    if($this->Prenom !== NULL)
    {
    $Sql .=" `prenom` = '".$this->Prenom ."'";
    }
    }
    }
     
    $Toto = new Toto();
    $Toto->Nom = "";
    $Toto->update();
    // Passera dans nom mais pas dans prenom !
    L'opérateur !== pemet de vérifier l'égalite + le type de deux valeurs.
    Je ne suis plus tout à faits sur sur ce point, à vrai dire je ne sais plus si il est necessaire de mettre !== ou si != suffit.
    C'est un point que je te laisses vérifier.


    voila bye

  9. #9
    Membre extrêmement actif
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Billets dans le blog
    3
    Par défaut
    D'accord, merci beaucoup

    Je croyais que null était égal à ''. Par exemple :
    $var = '' était pareil que $var = null

    Merci beaucoup :o

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

Discussions similaires

  1. Interpréter le nom d'une fonction en php
    Par Pauloscorps dans le forum Langage
    Réponses: 19
    Dernier message: 19/02/2012, 18h11
  2. [MySQL] Nom variable PHP est le nom d'une colonne
    Par baderahmed dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 16/07/2009, 12h44
  3. Réponses: 5
    Dernier message: 06/11/2008, 10h53
  4. [POO] Appeler une fonction par son nom dans une variable
    Par whitespirit dans le forum Langage
    Réponses: 16
    Dernier message: 18/06/2008, 11h23
  5. [SGBD] [POO PHP 4.4.2] Problème mysql_query dans une fonction
    Par Djoul dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 16/06/2006, 13h25

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