10
votes

Que signifie cette signature (&) en PHP?

considérer: xxx

pourquoi & ?


1 commentaires

3 Réponses :


11
votes

1 commentaires

Juste un Sidenote, cela n'est presque jamais bénéfique. Les objets sont transmis par référence. La seule chose qui pourrait aider avec les matrices (elles ne sont donc pas copiées), mais la prestation est minimale, si elle existait du tout.



0
votes

passe de PHP par référence métacaracter. Voir Passage par référence


0 commentaires

12
votes

Dans la syntaxe de PHP, cela signifie que la fonction renvoie une référence au lieu d'une valeur. Par exemple: xxx

dans l'exemple ci-dessus, supprimer le & de la déclaration de fonction rendrait la variable FOO contient encore 'foo «Depuis seulement la valeur, la référence n'a pas été renvoyée de la fonction.

Ceci a été utilisé plus souvent dans PHP4, car il ne passait pas d'objets par leur référence et les a clonés à la place. Pour cette raison, des variables d'objet devaient être transmises par référence pour éviter le clonage indésirable. Ce n'est plus le cas dans PHP5 et les références ne doivent pas être utilisées à cette fin.

Cependant, les fonctions qui renvoient des références ne sont pas totalement inutiles (ou une mauvaise pratique, lorsqu'elles ne sont pas utilisées pour remplacer les références d'objet).

Par exemple, personnellement, je les ai utilisés lors de la création d'un script qui transmet un "chemin" à une fonction, qui renvoie la référence à la variable dans ce chemin me permettant de définir la valeur et de lire la valeur. En raison de la nature récursive de la fonction, le retour de la référence était nécessaire.

par rithiur


4 commentaires

+1 pour une explication approfondie pragmatique qui double également en tant que preuve que le système de Rep est pas tout ce que


$ bar = & get_foo_ref (); , ici et n'est pas nécessaire


@Manos Dilaverakis: Je pense que le partage de bonnes choses ne serait jamais une faute.


@ user198729: Dans cet exemple, il semble nécessaire d'être nécessaire.