Używam biblioteki Facebooka z tym kodem:
class FacebookRestClient {
...
public function &users_hasAppPermission($ext_perm, $uid=null) {
return $this->call_method('facebook.users.hasAppPermission',
array('ext_perm' => $ext_perm, 'uid' => $uid));
}
...
}
Co oznacza & na początku definicji funkcji i jak mam się do tego zabrać z taką biblioteką (w prostym przykładzie)
Jak już wspomniano, zwraca odniesienie. W PHP 4 obiektom przypisywano wartość, tak jak każdej innej wartości. Jest to wysoce nieintuicyjne i sprzeczne z tym, jak działa większość innych języków.
Aby obejść ten problem, wykorzystano odniesienia do zmiennych wskazujących na obiekty. W PHP 5 odwołania są bardzo rzadko używane. Domyślam się, że jest to starszy kod lub kod, który próbuje zachować wsteczną zgodność z PHP 4.
źródło
Jest to często nazywane w PHP jako zwracanie odniesienia lub zwracanie przez odniesienie .
Dokumentacja PHP dotycząca zwracania referencji
Odniesienia w PHP jest po prostu inna nazwa przypisana do zmiennej treści. Odwołania do PHP nie są podobne do wskaźników w programowaniu w C , nie są rzeczywistymi adresami pamięci, więc nie mogą być używane do arytmetyki wskaźników.
Koncepcja zwracania referencji może być bardzo myląca, szczególnie dla początkujących, więc przykład będzie pomocny.
$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
Funkcja
getPopulationCount()
zdefiniowana za pomocą poprzedzającego&
zwraca odwołanie do zawartości lub wartości$populationCount
. Tak więc, inkrementacja$countryPopulation
, także inkrementacja$populationCount
.źródło