web-dev-qa-db-fra.com

Que signifie 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 utiliser une bibliothèque comme celle-ci (dans un exemple simple)

122
Alex Mcp

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 .

149
Dominic Rodger

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.

14
troelskn

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.

3
Elisha Senoo