$this->$key = array[$key]
et déclare ton tableau : $tab = Array( [a] => 'pomme', [b] => 'banane')
et tu auras :
$this->a = 'pomme';
$this->b = 'banane';
Merci, ça marche super bien mais je comprends pas vraiment pourquoi la syntaxe $this->$key fonctionne et $this->key ne fonctionne pas, parce qu'habituellement j'utilise la deuxième syntaxe et ça fonctionne.
C'est parce qu'ici key n'est pas une véritable variable ?
$key = 'machin';
$this->key renvoit la valeur de l'attribut $key de $this
$this->$key renvoit la valeur de l'attribut $machin de $this
ainsi si tu fais un foreache sur $this->key = array[$key]
l'attribut $key de $this sera sans cesse modifié ($this->key ) =array[0]; $this->key ) =array[1]; ...) mais cela n'impactera pas les autres attributs (key est invariable).
D'habitude, tu utilises la syntaxe $key = array[$key] qui fontionne.
Si tu veux comprendre les méthodes d'accès aux variables d'une classe, imagine que chaque objet soit un tableau de variable ainsi $this->key pointerait sur $this['key'], cad toujours la même variable et $this->$key pointerait sur $this[$key].