Retourner des références
Retourner des références est utile lorsque l'on
souhaite utiliser une fonction pour déterminer à quelle variable
une rĂ©fĂ©rence devrait ĂȘtre liĂ©e.
Il ne faut pas utiliser
le retour par référence pour améliorer les performances,
le moteur est suffisamment robuste pour optimiser cela
en interne. Il convient de ne retourner des références que
lorsqu'il y a de bonnes raisons techniques
de le faire. Pour retourner des références, utiliser cette syntaxe :
Dans cet exemple, on affecte une valeur à la propriété de l'objet
retourné par la fonction
getValue, et non Ă sa copie,
comme ce serait le cas si nous n'avions pas utilisé la syntaxe de référence.
Note:
Contrairement au passage de paramĂštre, ici, il faut utiliser
& aux deux endroits, Ă la fois pour
indiquer le retour par référence (pas par copie), et
pour indiquer l'assignation aussi par référence (pas par copie
non plus) pour la variable $myValue.
Note:
Tenter de retourner une référence depuis une fonction
avec la syntaxe : return ($this->value);,
ne fonctionnera pas comme
attendu, et retournera le résultat de l'expression,
et pas de la variable, par référence. Seules
des variables peuvent ĂȘtre retournĂ©es par rĂ©fĂ©rence depuis une fonction - et rien d'autre.
Pour utiliser la référence retournée, il faut utiliser l'affectation
par référence :
Note:
Si l'affectation est faite sans le symbole &,
par exemple $collection = collector();,
la variable $collection recevra une copie de la valeur,
et non la référence retournée par la fonction.
Pour passer la référence retournée à une autre fonction attendant une référence,
il est possible d'utiliser la syntaxe suivante :
Note:
Il est Ă noter que array_push(&collector(), 'foo');
ne fonctionnera pas, et résultera en une erreur
fatale.