POO : attributs/méthodes de classe, self avec static ? ou this ?

Résolu/Fermé
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 - 28 sept. 2017 à 13:15
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 - 28 sept. 2017 à 14:43
Hey, bonjour à tous !

Petite question de POO :)
Il me semble avoir bien compris l'utilité de la propriété static lorsqu'il s'agit d'utiliser des attributs / méthodes à l'extérieur de ma classe.
Je comprend aussi l'intérêt pour un héritage de classe.
J'ai plus de mal à voir l'utilité lorsqu'il s'agit d'être à l'intérieur de ma classe.

Je ne vois pas de différence claire entre :
class Exemple{

	private static $_myvar;

	public function getVar(){
		return self::$_myvar;
	}
}

Et cela :
class Exemple{

	private $_myvar;

	public function getVar(){
		return $this->_myvar;
	}
}


J'ai eu cette suggestion :
$this->_myvar est destiné à être modulable tandis que
self::$_myvar est destiné à garder la même valeur.
Est-ce exact ?
Est-il incorrect d'attribuer une valeur modulable à un self::$_myvar ?
Y-t-il vraiment une différence importante entre l'un ou l'autre dans ce contexte sinon ?

Merci d'avance :)
Yuh
A voir également:

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
28 sept. 2017 à 14:34
Bonjour,

Si c'est static la donnée appartient à la classe, sinon ça appartient à l'objet.

Notamment, si tu changes la valeur d'un attribut static alors ça affectera tous les objets de la classe, contrairement à un attribut "normal" qui change uniquement pour l'objet sur lequel on fait le changement (this).
1
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 24
28 sept. 2017 à 14:43
Merci beaucoup :) !
0