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 utiliser une bibliothèque comme celle-ci (dans un exemple simple)
Une esperluette devant un nom de fonction signifie que la fonction renverra 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 trouver à quelle variable une référence doit être liée. N'utilisez pas le retour par référence pour augmenter les performances. Le moteur optimisera automatiquement cela tout seul. Renvoyez les références uniquement lorsque vous avez une raison technique valable de le faire.
Voir Renvoi de références .
Il renvoie une référence, comme déjà mentionné. En PHP 4, les objets étaient assignés par valeur, comme toute autre valeur. C'est très peu intuitif et contraire à la façon dont la plupart des autres langues fonctionnent.
Pour contourner le problème, des références ont été utilisées pour les variables qui pointaient vers des objets. En PHP 5, les références sont très rarement utilisées. Je suppose que c'est du code hérité ou du code essayant de préserver la compatibilité descendante avec PHP 4.
Ceci est souvent connu dans PHP as Returning reference or Returning by reference .
Le retour 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 retour par référence pour augmenter les performances. Le moteur optimisera automatiquement cela tout seul. Renvoyez les références uniquement lorsque vous avez une raison technique valable de le faire.
Documentation PHP sur Retour de référence
Une référence dans PHP est simplement un autre nom attribué au contenu d'une variable. les références PHP sont pas comme les pointeurs en programmation C , ce ne sont pas des adresses mémoire réelles, donc ils ne peuvent pas être utilisés pour l'arithmétique des pointeurs.
Le concept de renvoi de références peut être très déroutant, en particulier pour les débutants, donc un exemple sera utile.
$populationCount = 120;
function &getPopulationCount() {
global $populationCount;
return $populationCount;
}
$countryPopulation =& getPopulationCount();
$countryPopulation++;
echo "\$populationCount = $populationCount\n"; // Output: $populationCount = 121
echo "\$countryPopulation = $countryPopulation\n"; //Output: $countryPopulation = 121
La fonction getPopulationCount()
définie avec un &
Précédent, renvoie la référence au contenu ou à la valeur de $populationCount
. Ainsi, l'incrémentation de $countryPopulation
Incrémente également $populationCount
.