[PHP] Utilisation de $this->

Fermé
Technus - 26 mars 2008 à 18:47
 LeFredd - 27 mars 2014 à 21:25
Bonjour,

class Panier {
var $items;
function add_item ($artnr, $num) {
$this->items[$artnr] += $num;
}
}

Je programme du php depuis quelques années en amateur, et je ne comprend toujours pas ce à quoi le $this sert !?

- Pourquoi ne pas faire simplement :

$items[$artnr] += $num;

- Et quelle valeur $this prend ?

- Et à quoi sert le "var" ? Est-il obligatoire ?

Merci d'avance :)

(j'aurais peut-être quelques autres questions à vous poser, en ce moment je me lance dans les Classes)

2 réponses

1- Dans une classe, quand tu as une méthode qui a besoin d'accéder aux propriétés de cette classe pour lui attribuer une valeur par exemple, alors il faut utiliser le mot clé $this. Prend ça comme une convention.
-> $this permet donc à une méthode (entre autre) d'accéder aux propriétés de ta classe.

2- Maintenant pour être dans le concret lorsque tu instancies ta classe pour en faire un objet, tu peux remplacer mentalement le mot clé $this par le nom de l'objet que tu viens de créer pour que se soit plus clair pour toi, et parceque réellement $this représente l'objet instancié.
Je m'explique: imagines une classe :

class Personnage()
{
public $nom;
public $parler;
// Je viens de définir 2 propriétés qui définiront mon futur objet Personnage

public function donnerUnNom($nomPerso)
{
$this->nom = $nomPerso;
}
// Le contenu de cette méthode veux dire que lorsque tu l'appelles, elle donne une valeur (correspondant à l'argument que tu lui a passé) à la propriété $nom, de l'objet Personnage.
// Exemple :
// $toto = new Personnage();

// je veux donner un nom à toto :
// $toto->donnerUnNom('Des Blagues');

// C'est là ou tu peux remplacer mentalement le mot clé $this par $toto. Ce qui donnerai : "Le nom de $toto est égal à l'argument $nomPerso de la méthode donnerUnNom() qui vaut Des Blagues.
// Ici la propriété $nom vaut donc Des Blagues.
// Maintenant si tu veux afficher le nom de ton personnage, il faudrait que tu crée une méthode qui te permette d'afficher le nom ex :

public function afficherNom()
{
echo $this->nom;
// ici tu peux dire mentalement "affiche le nom de l'objet $toto"
}
}

//Ici on est en dehors de la classe. Si je reprend mon exemple plus haut cela donne :

$toto = new Personnage();
// on instancie la classe pour en faire un objet $toto.

$toto->donnerUnNom('Des Blagues');
// avec l'objet créé, on appelle la méthode qui sert à donner un nom à son personnage.

$toto->afficherNom();
// ici on appelle la méthode qui affichera le nom(correspondant à la propriété $nom) de l'objet, donc : Des Blagues

Voilà j'espère t'avoir éclairé ;)
13