2009-11-04 6 views
99

Ich bin mit der Facebook-Bibliothek mit diesem Code in es:Was bedeutet es, eine PHP-Funktion mit einem kaufmännischen Und-Zeichen zu starten?

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

Was die & zu Beginn der Funktionsdefinition bedeutet das, und wie gehe ich über eine Bibliothek wie folgt aus (in einem einfachen Beispiel)

Antwort

130

Ein Und-Zeichen vor einem Funktionsnamen bedeutet, dass die Funktion einen Verweis auf eine Variable anstelle des Werts zurückgibt.

durch Bezugnahme Rückkehr ist nützlich, wenn Sie eine Funktion zu finden, um verwenden möchten, welche Variable eine Referenz gebunden sein sollte. Verwenden Sie nicht Return-by-Reference , um die Leistung zu erhöhen. Der Motor wird dies automatisch auf seine eigene optimieren. Geben Sie nur Referenzen zurück, wenn Sie einen gültigen technischen Grund zu haben.

Siehe Returning References.

+3

erhalten Darüber hinaus kann http://php.net/references ein wenig auch helfen. –

+1

Also, ohne ins Detail zu gehen, würden Sie (mit der instanziierten Klasse) etwas wie $ results = $ facebook-> users_hasAppPermission ($ param1, $ param2) aufrufen; ? Ich denke, ich bin mir der Nuance hier nicht sicher, danke für die Hilfe. –

+2

Ja - ich würde es einfach so nennen. –

13

Es wird eine Referenz zurückgegeben, wie bereits erwähnt. In PHP   4 wurden Objekte wie jeder andere Wert nach Wert zugewiesen. Dies ist sehr unintuitiv und im Gegensatz zu den meisten anderen Sprachen.

Um das Problem zu umgehen, wurden Referenzen für Variablen verwendet, die auf Objekte verwiesen. In PHP   5 werden Referenzen sehr selten verwendet. Ich vermute, das ist Legacy-Code oder Code versucht, die Rückwärtskompatibilität mit PHP   4.

+0

Es ist die offizielle Facebook PHP-Bibliothek, FWIW. –

+0

Informationen zum neuen PHP 5 Object Model (im Gegensatz zum alten Pass-by-Value-Nonsense (und anderen Unsinn) von PHP4): http://php.net/manual/en/migration5.oop.php – Dereleased

+3

@Alex In diesem Fall tun sie es wahrscheinlich, um Gelegenheits-Hacker, die php4 benutzen, vor sich selbst zu schützen. Sie sollten dies nicht in Ihrem eigenen Code tun - es ist veraltet. – troelskn

Verwandte Themen