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

Yuh12 186 Messages postés mercredi 7 mai 2014Date d'inscription 28 septembre 2017 Dernière intervention - 28 sept. 2017 à 13:15 - Dernière réponse : Yuh12 186 Messages postés mercredi 7 mai 2014Date d'inscription 28 septembre 2017 Dernière intervention
- 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
Afficher la suite 
186Messages postés mercredi 7 mai 2014Date d'inscription 28 septembre 2017 Dernière intervention

2 réponses

Répondre au sujet
KX 15086 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 11 décembre 2017 Dernière intervention - 28 sept. 2017 à 14:34
+1
Utile
1
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).
Cette réponse vous a-t-elle aidé ?  
Yuh12 186 Messages postés mercredi 7 mai 2014Date d'inscription 28 septembre 2017 Dernière intervention - 28 sept. 2017 à 14:43
Merci beaucoup :) !
Commenter la réponse de KX