Passage par r�f�rence
Vous pouvez passer des variables par r�f�rence, de mani�re � ce que la fonction modifie ces variables. La syntaxe est la suivante :
Exemple #1 Passage par r�f�rence
<?php
function foo(&$var) {
$var++;
}
$a=5;
foo ($a);
// $a vaut 6 maintenant
?>
Notez qu'il n'y a pas de signe de r�f�rence dans l'appel de la fonction, uniquement sur sa d�finition. La d�finition de la fonction est suffisante pour passer correctement des arguments par r�f�rence. Dans les versions r�centes de PHP, vous devriez recevoir une alerte disant que "Call-time pass-by-reference" est obsol�te lorsque vous utilisez un & dans foo(&$a);.
Les objets suivants peuvent �tre pass�s par r�f�rence :
- Une variable, i.e. foo($a)
- Un nouvel objet, i.e. foo(new foobar())
-
Une r�f�rence, retourn�e par une fonction :
Exemple #2 Retour d'une r�f�rence par une fonction
<?php
function &bar() {
$a = 5;
return $a;
}
foo(bar());
?>Voir aussi des d�tails dans retourner des r�f�rences.
Toutes les autres expressions ne doivent pas �tre pass�es par r�f�rence, car le r�sultat sera ind�fini. Par exemple, les passages par r�f�rence suivants sont invalides :
Exemple #3 Passage par r�f�rence invalide
<?php
function bar() // Notez l'absence de &
{
$a = 5;
return $a;
}
foo(bar()); // Produit une erreur fatale depuis PHP 5.0.5
foo($a = 5); // Expression, pas une variable
foo(5); // Produit une erreur fatale
?>
Ces fonctionnalit�s sont valables � partir de PHP 4.0.4.