PHP Retour par référence


Exemple

Il arrive parfois que vous ayez le temps de retourner implicitement par référence.

Le renvoi par référence est utile lorsque vous souhaitez utiliser une fonction pour trouver à quelle variable une référence doit être liée. N'utilisez pas le renvoi par référence pour améliorer les performances. Le moteur optimisera automatiquement cela seul. Ne renvoyez les références que lorsque vous avez une raison technique valable de le faire.

Tiré de la documentation PHP pour le renvoi par référence .

De nombreux formulaires peuvent être retournés par référence, dont l'exemple suivant:

function parent(&$var) {
    echo $var;
    $var = "updated";
}

function &child() {
    static $a = "test";
    return $a;
}

parent(child()); // returns "test"
parent(child()); // returns "updated"

Le renvoi par référence ne se limite pas aux références de fonction. Vous avez également la possibilité d'appeler implicitement la fonction:

function &myFunction() {
    static $a = 'foo';
    return $a;
}

$bar = &myFunction();
$bar = "updated"
echo myFunction();

Vous ne pouvez pas référencer directement un appel de fonction, il doit être assigné à une variable avant de l'exploiter. Pour voir comment cela fonctionne, essayez simplement echo &myFunction(); .


Remarques

  • Vous devez indiquer une référence ( & ) aux deux endroits que vous souhaitez utiliser. Cela signifie que pour votre définition de fonction ( function &myFunction() {... ) et dans la référence d'appel ( function callFunction(&$variable) {... ou &myFunction(); ).
  • Vous ne pouvez renvoyer une variable que par référence. D'où l'instanciation de $a dans l'exemple ci-dessus. Cela signifie que vous ne pouvez pas retourner une expression, sinon une erreur PHP E_NOTICE sera générée ( Notice: Only variable references should be returned by reference in ...... ).
  • Le retour par référence a des cas d'utilisation légitimes, mais je devrais avertir qu'ils devraient être utilisés avec parcimonie, seulement après avoir exploré toutes les autres options possibles pour atteindre le même objectif.