Question de syntaxe sur l'opérateur this

Petit nouveau ! | 1 Messages

08 mars 2012, 11:58

Bonjour,
Je voudrais savoir ce que c'est cette syntaxe en PHP objet

        
 public function maMethode($donnees)  
        {  
            foreach ($donnees as $attribut => $valeur)  
            {  
                $methode = 'set'.ucfirst($attribut);  
                  
                if (is_callable(array($this, $methode)))  
                {  
                    $this->$methode($valeur);  
                }  
            }  
        }

Donc je me demande ce que c'est cette syntaxe $this->$methode
Pourquoi ne pas faire la même chose sans l'opérateur $this->.
Quel sont les avantage de cette syntaxe ?

Pouvez-vous m'expliquer ?
Merci d'avance :)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

08 mars 2012, 12:16

Bonjour,

Tout est dans la l'ordre de résolution.
Un petit exemple parlant :
class Foobar
{
	public function bar()
	{
		$method = 'foo';

		$this->$method(); // va exécuter $this->foo() car PHP va commencer par résoudre $method, puis $this->(contenu de $method)
	}

	public function foo()
	{

	}
}
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 mars 2012, 11:59

Juste un oublie : en php $this est obligatoire (contrairement à java par exemple ^^)

@+
Il en faut peu pour être heureux ......