Passage par référence
Vous pouvez passer des variables par référence, de manière à ce que la fonction modifie ses arguments. La syntaxe est la suivante :
Example#1 Passage par référence
<?php
function foo(&$var) {
$var++;
}
$a=5;
foo ($a);
// $a vaut 6 maintenant
?>
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 :
Example#2 Retour d'une référence par une fonction
<?php
function &bar() {
$a = 5;
return $a;
}
foo(bar());
?>
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 :
Example#3 Passage par référence invalides
<?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
?>