136 votes

Qu'est-ce que cela signifie de démarrer une fonction PHP avec une esperluette?

J'utilise la bibliothèque Facebook avec ce code:

 class FacebookRestClient {
...
    public function &users_hasAppPermission($ext_perm, $uid=null) {
        return $this->call_method('facebook.users.hasAppPermission', 
        array('ext_perm' => $ext_perm, 'uid' => $uid));
    }
...
}
 

Que signifie le & au début de la définition de la fonction et comment puis-je utiliser une bibliothèque comme celle-ci (dans un exemple simple)

163voto

Dominic Rodger Points 44489

Une esperluette avant le nom d'une fonction signifie que la fonction retourne une référence à une variable au lieu de la valeur.

Le retour par référence est utile lorsque vous souhaitez utiliser une fonction pour en trouver la variable qui référence devrait être lié. N'utilisez pas de retour par référence pour augmenter les performances. Le moteur automatiquement optimiser ce sur de son propre. Retourner uniquement les références lors de l' vous avez une technique valide raison de le faire.

Voir Le Retour Des Références.

17voto

troelskn Points 51966

Il retourne une référence, comme déjà mentionné. En PHP4, les objets étaient assignés par valeur, comme toute autre valeur. Ceci est très peu intuitif et contraire à la façon dont la plupart des autres langues fonctionnent. Pour résoudre le problème, des références ont été utilisées pour les variables pointant vers des objets. En PHP5, les références sont très rarement utilisées. J'imagine que c'est du code hérité ou du code essayant de préserver la compatibilité descendante avec php4.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X