Passage de variables par référence : problème

Utilisateur anonyme -  
kilian Messages postés 8854 Statut Modérateur -
Bonjour,

je cherche quelqu'un qui peut me dire se que signifie ces deux points dans cette synthaxe :

$personne =& Personne::getInstance();

	function &getInstance(){
		global $personne_instance;
		if(!isset($personne_instance))
			$personne_instance = new Personne();
		return $personne_instance;
	}


si vou plai ? C'est les deux points qui m'embête :o)
A voir également:

4 réponses

Doctor C Messages postés 648 Statut Membre 399
 
Bon, ça fait un ou deux ans que j'ai pas fait de C mais, selon mes souvenirs, les :: signifient l'appartenance. Je suis pas totallement certains de ce que je te dis mais, si mes souvenirs sont bons.

dans ton cas, le programme va chercher la fonction getInstance() de la classe Personne. S'il existait une autre fonction nommée getInstance() dans ton main, il prendrait quand même celle de classe Personne.

Encore là, j'aimerais que quelqu'un puisse confirmer ce que je dis... je ne voudrais pas t'induire en erreur.
2
kilian Messages postés 8854 Statut Modérateur 1 526
 
C'est le Paamayim Nekudotayim! :-)
En fait c'est l'opérateur de résolution pour accéder aux données statiques à une classe.

Je m'explique, son sens est légèrement différent des deux points en C++ qui ont une signification plus "ample".
En c++, cet opérateur permet de faire référence à un élément dans une classe ou un espace de nom.

En php, il ne sert qu'à appeler les membres et méthodes statiques d'une classe, c'est à dire les variables et fonctions qui sont propres à la classe et non pas propres à chaque instance de la classe.
Donc au final, dans une classe, ce qui est défini avec le mot clé "static" peut être appelé avec ces deux points (sauf variables statiques à une fonction, bref oublions ça, ça complique les choses)...
2
Utilisateur anonyme
 
.. en tout cas, il y a une méthode de même nom dans chacune de mes classes.
1
Utilisateur anonyme
 
Oui, c'est tout à fait cela. J'ai fouillé un peu plus et je me suis aperçu que plusieurs de mes classes font appel à la même méthode.

Merci.
-2