Les références vous permettent de faire pointer
deux variables sur le même contenu. Par exemple, lorsque
vous faites :
Exemple 14-1. Les références |
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):
Exemple 14-2. Les références et new()
<?php $bar =& new fooclass(); $foo =& find_var ($bar); ?>
|
|
Note :
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.
Même si vous pouvez utiliser l'opérateur @ pour
supprimer les messages d'erreurs du constructeur
avec la syntaxe @new, cela ne fonctionnera pas avec
la syntaxe &new. C'est une limitation du
moteur Zend, et cela conduit à une erreur d'analyse.
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 :
Exemple 14-3. Passage de paramètre par références
<?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.