Variables dynamiques, attributs [Résolu]

Signaler
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
-
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
-
Salut,

J'ai une variable sous forme de chaîne représentant un attribut d'une classe.
Disons $a = "m_attributdelaclasse";

Pour écrire sur cet attribut, je fais:
$dyn_str = "this->".$a;
$$dyn_str = "truc à écrire";

Mais ça ne fonctionne pas.
Ou est le problème ?

Quand je fais manuellement:
$this->m_attributdelaclasse = "truc à écrire"; ça fonctionne bien évidemment.

Merci

3 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

à mon avis, c'est parce que 'this->m_attributdelaclasse' est pris comme une chaîne entière.
Lorsque tu en fais une variable dynamique, il doit chercher à prendre toute cette chaîne comme étant la variable.
Ce qui est bien évidemment faux. $this est une variable faisant référence à l'objet courant,
-> est un opérateur, et m_attributdelaclasse étant un attribut de l'objet référencé par $this.
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Ah voui voui ...
Ce que l'intérpréteur va comprendre, c'est ca :
${this->m_attributdelaclasse};
Au lieu de :
{$this}->m_attributdelaclasse;

Au lieu de t'emmerder à ca, tu peux faire :
echo $this->$a;
et ca te rendras bien ($this->m_attributdelaclasse);

Voila voila
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
1
Raaaahh je suis blasé !
Ton truc fonctionne FhX.
C'est quand même chiant de passer du C au php. Il n'y a plus de pointeurs car les données ne sont plus typées. Dans un sens c'est plus facile mais dans d'autres.....

Merci