2009-07-08 7 views

Répondre

7

Seuls les objets sont transmis par référence. Cela ne veut pas dire que vous obtiendrez une amélioration des performances en passant à des références - PHP utilise la copie sur écriture, donc une copie n'est faite que si vous modifiez la variable. Diviser votre code en fonctions ne le ralentira pas de ce point de vue. Il y a un petit surcoût pour appeler une fonction, mais à moins que vous ne soyez dans une boucle qui en appelle 10 000, ce n'est probablement pas quelque chose dont vous avez besoin.

+2

Les objets ne sont pas transmis par référence. Les objets sont des types de référence, mais ils sont transmis par valeur en tant que paramètres de fonction, sauf indication contraire. – Joseph

+0

Ils ne sont pas techniquement transmis par référence mais assez proche. C'est vrai à partir de PHP 5 - PHP 4 était différent. – Greg

1

Oui, les primitives sont transmises par valeur sauf si vous définissez explicitement la fonction à passer par référence (en utilisant une esperluette & devant le paramètre) ou invoquez la fonction avec une esperluette devant l'argument. (Ce dernier est déconseillé)

Voir this part of the documentation pour plus d'informations.

EDIT

En outre, l'affirmation selon laquelle « les objets sont passés par référence » en PHP est un peu d'une simplification, mais il peut souvent penser de cette façon pour la plupart des cas. Ce chapter of the documentation explique les différences.

1

Le passage par référence est en fait plus lent que le passage par valeur en PHP. Je ne peux pas trouver la citation correcte pour cette réclamation; C'est quelque part dans la section "Références" du manuel PHP.

Questions connexes