Manuel PHP
Précédent | Chapitre 14. Les références | Suivant

# 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 :

Exemple 14-1. Les références

`<?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):

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.

Précédent | Sommaire | Suivant
Les références | Niveau supérieur | Ce que les références ne sont pas