Que font les références ?

Les références vous permettent de faire pointer deux variables sur le même contenu . Par exemple , lorsque vous faites :

 
?php

 
$a

 
=

 
$b

 
?



cela signifie que $a et $b pointent sur la même variable.

Note : $a et $b sont complètement égales ici : ce n'est pas $a qui pointe sur $b , ou vice versa. C ' est bien $a et $b qui pointent sur le même contenu .

La même syntaxe peut être utilisée avec les fonctions qui retournent des références, et avec l'opérateur new (PHP 4.0.4 et plus récent):
 
?php

 
$bar

 
=

 
new

 
fooclass(

 
)

 
;

 
$foo

 
=

 
find_var

 
($bar)

 
;

 
?





A moins d' utiliser la syntaxe ci-dessus , le résultat de $bar = new fooclass( ) ne sera pas la même variable que $this dans le constructeur , ce qui signifie que si vous avez utilisé la référence $this dans le constructeur , vous devez assigner la référence , ou bien obtenir deux objets différents .

Le deuxième intérêt des références est de pouvoir passer des variables par référence . On réalise ceci en faisant pointer des variables locales vers le contenu des variables de fonction . Exemple :

 
?php

 
function

 
foo(

 
$var

 
)

 
{

 
$var++

 
;

 
  }

 
$a=5

 
;

 
foo($a)

 
;

 
?



$a vaut 6. Cela provient du fait que dans la fonction foo , la variable $var pointe sur le même contenu que $a . Voir aussi les explications détaillées dans passage par référence .

Le troisième intérêt des références est de retourner des valeurs par référence .