Vous pouvez passer des variables par référence, de
manière à ce que la fonction modifie ses arguments.
La syntaxe est la suivante :
Exemple 21-8. 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 déprécié 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 21-9. 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 21-10. 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.1.0
foo($a = 5); // Expression, pas une variable foo(5); // Produit une erreur fatale ?>
|
|
Ces fonctionnalités sont valables à partir de PHP 4.0.4.