Warum methode/funktion referenzieren

tach community,

welchen nutzen kann es haben eine referenz einer function zu erzeugen ?

also…

 function &fooBar(){
 // macht irgendwas
 }

ein praktisches beispiel waere hilfreich.
danke.

PixelKoenig

tach community,

welchen nutzen kann es haben eine referenz einer function zu
erzeugen ?

also…

function &fooBar(){
// macht irgendwas
}

das erzeugt aber keine referenz auf eine funktion, sondern sagt dass die funktion eine referenz zurueckgibt.

ja…aber wozu? (beispieL)

das erzeugt aber keine referenz auf eine funktion, sondern
sagt dass die funktion eine referenz zurueckgibt.

ok… habe funktionsaufruf vergessen…
nichts destotrotz,…
wozu ?
wozu soll eine funktion eine referenz zurueckgeben?

grusz

Pixel

das erzeugt aber keine referenz auf eine funktion, sondern
sagt dass die funktion eine referenz zurueckgibt.

ok… habe funktionsaufruf vergessen…
nichts destotrotz,…
wozu ?
wozu soll eine funktion eine referenz zurueckgeben?

na zum beispiel, um auf ressourcen, wie offene file- od. datenbankhandels zuzugreifen, od. um sich die mehrfache zuweisung von speicherintensiven varieblen/arrays zu sparen.

Hi Pixel,

wozu soll eine funktion eine referenz zurueckgeben?

Um das Result der Funktion einer Variable außerhalb der Funktion als Zeiger auf die Variable, Objekt oder Ressource selbst zuweisen zu können, anstatt durch die Zuweisung eine Kopie der Variable zu erzeugen. Bei Funktionen musst Du von Anfang an definieren, dass sie eine Referenz zurückgeben, deshalb kommt das & vor dem Funktionsnamen. Das ist anders als bei den Referenzparametern. Dort kannst Du immer & $irgendwas übergeben, auch wenn es nicht explizit in der Deklaration steht, und innerhalb der Funktion greifst Du dann auf die übergebene Variable selbst zu.

Beispiel:

<?php class foo {<br /> var $bar = 0;
 var $foo = 0;
 function &rget($which) {
 return $this-\>$which;
 }
 function get($which) {
 return $this-\>$which;
 /\*return & $this-\>$which; //falsche Syntax \*/
 }
}

$foo = new foo();
$foobar =& $foo-\>rget('bar');
$foobar = 5;

$foofoo =& $foo-\>get('foo'); /\* & ist hier wirkungslos \*/
$foofoo = 5;

var\_dump($foo);

?\>

Ciao
Rudy