il y a quelques temps, je suis tombé sur l'opérateur =&, je me suis renseigné dessus et j'ai compris que c'était une assignation par référence, et que donc
$toto = 5;
$tata =& $toto;
$tata += 2;
// $toto (toujours)== $tata == 7
Si je modifie tata, la valeur de toto sera également modifiée, et vice versa...De la même manière mais plus farfelu, il est également possible de faire ( directement depuis la DOC ) :
<?php
$a = 1;
$b = array(2, 3);
$arr = array(&$a, &$b[0], &$b[1]);
$arr[0]++; $arr[1]++; $arr[2]++;
/* $a == 2, $b == array(3, 4); */
?>
Je ne sais pas si j'aurai à me service de ça un jour, mais c'est possible.Maintenant ma question, j'ai lu il y a un moment que l'opérateur new retourne une référence, est ce que ça signifie que
$oTest = new Test();
est identique à
$oText = &new Test(); ??Et si on se dit que $a toujours égal à $b, quel intérêt de créer une nouvelle variable pour cela ? je ne comprend pas toujours bien l'interêt des références, mis à par lors de l'utilisation de foreach
foreach($arr as &$valeurParRef)
{
}
ou à la limite passer une paramètre à une fonction, tout en sachant qu'on pourrait très bien faire un return avec les valeurs de retour souhaités ( économie de mémoire peut-être ? )