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 :

[Tableaux] Accesseur et Array


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Janvier 2006
    Messages : 43
    Points : 43
    Points
    43
    Par défaut [Tableaux] Accesseur et Array
    Bonjour,
    J'ai l'objet suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class monObjet {
    // PROPRIETES
    protected var1;
    protected var2 = array("cle1"=>null, "cle2"=>null)
    // METHODE
    public function getPropriete($propriete){return $this->$propriete;}
    }
    J'ai fait une méthode getPropriete qui me permet de récupérer la valeur de ma propriété ce qui m'évite d'avoir une méthode par propriété (est-ce une bonne idée?).

    Maintenant je bloque pour faire cette même méthode mais pour une propriété qui est un tableau. Cette méthode a deux arguments : le nom de la propriété en question ($propriété) et la clé du tableau ($clé).
    Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public function getProprieteArray($propriete, $cle){return $this->$propriete[$cle];}
    Mais j'ai l'erreur : Undefined property.
    Je dois avoir une erreur de syntaxe pourtant j'ai tout essayé.

    Quelqu'un pourrait m'éclairer à ce sujet ?
    Merci d'avance

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 222
    Points : 8 468
    Points
    8 468
    Billets dans le blog
    17
    Par défaut
    J'ai fait une méthode getPropriete qui me permet de récupérer la valeur de ma propriété ce qui m'évite d'avoir une méthode par propriété (est-ce une bonne idée?)
    Bof.

    Pour ton pb, ceci devrait passer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return $this->{$propriete}[$cle] ;

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Janvier 2006
    Messages : 43
    Points : 43
    Points
    43
    Par défaut
    Merci pour ta rapidité.
    Je viens juste d'essayer et ma méthode est donc ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public function getProprieteArray($propriete, $cle){return $this->{$propriete}[$cle];}
    que j'appelle ainsi pour reprendre mon exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $monObjet->getProprieteArray("var2","cle2");
    et il me retourne toujours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Undefined property: monObjet::$var2

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 222
    Points : 8 468
    Points
    8 468
    Billets dans le blog
    17
    Par défaut
    Dans le doute je viens de tester ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php 
        class Test {
            var $data = array('fruit' => 'Pomme', 'pays' => 'Espagne') ;
     
            function getPropertyArray($property, $key) {
                return $this->{$property}[$key] ;
            }
        }
     
        $t = new Test( ) ;
        echo $t->getPropertyArray('data', 'pays') ; // Espagne
    ?>
    J'obtiens bien Espagne (PHP 5.1).

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    salut
    implemente __set et __get
    sinon ca doit eter un erreur de copier coler mais il manque le ; ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    protected var2 = array("cle1"=>null, "cle2"=>null)

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Janvier 2006
    Messages : 43
    Points : 43
    Points
    43
    Par défaut
    Autant pour moi, c'était une erreur de copié/collé.
    Et cela fonctionne nickel, merci à vous.

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

Discussions similaires

  1. [Tableaux] Réinitialiser un array
    Par Christophe Charron dans le forum Langage
    Réponses: 4
    Dernier message: 30/06/2006, 16h51
  2. [Tableaux] passer un array d'une page à une autre
    Par 18Marie dans le forum Langage
    Réponses: 5
    Dernier message: 25/06/2006, 22h42
  3. [Tableaux] Trier un array
    Par borgfabr dans le forum Langage
    Réponses: 11
    Dernier message: 23/04/2006, 15h13
  4. [Tableaux] Envoyer un Array par un form method get
    Par Zen_Fou dans le forum Langage
    Réponses: 4
    Dernier message: 22/03/2006, 19h51
  5. [Tableaux] Gérer une array...
    Par kult dans le forum Langage
    Réponses: 7
    Dernier message: 16/11/2005, 17h03

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