Variables dynamiques, attributs

Résolu
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 - 13 avril 2006 à 11:59
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 - 13 avril 2006 à 14:17
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

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
13 avril 2006 à 12:59
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.
3
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
13 avril 2006 à 13:06
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
3
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
13 avril 2006 à 14:17
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
0
Rejoignez-nous