Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Referenzen in PHP
Letztes Update: 16.08.2005 17:53:45


Navigation

Seite News *

Seite Startseite
Seite Über SELFPHP
Seite Werbung
Seite Kontakt
Seite Forum *
Seite Download *
Seite SELFPHP Banner *
Seite SELFPHP in Buchform
Seite Newsletter *
Seite Impressum

 
* Link führt ins Internet



 

Was leisten Referenzen?




PHP Referenzen erlauben es, zwei Variablennamen sich auf den gleichen Variableninhalt beziehen zu lassen. Das heisst im folgenden Beispiel, dass sich $punkte und $punktestand auf dieselbe Variable beziehen:



<?php
$punkte
= 1000;
$punktestand = &$punkte;

// Ausgabe (1000)
echo $punktestand;
?>



Achtung: $punkte und $punktestand sind hier gleichwertig, und $punkte ist nicht nur ein Zeiger auf $punktestand oder umgekehrt, sondern $punkte und $punktestand zeigen auf den selben Inhalt.


Seit PHP 4.0.4 kann & auch in Verbindung mit new verwendet werden.



<?php
class Haus
{
    var
$etagen;
    function
Haus($etagen)
    {
        
$this->etagen = $etagen;
    }
}

$meinhaus = &new Haus(2);
$hausetagen = &$meinhaus->etagen;
// Ausgabe (2)
echo $hausetagen;
$hausetagen = 10;
// Ausgabe (10)
echo $meinhaus->etagen;
?>



Wenn der & Operator nicht verwendet wird, erzeugt PHP eine Kopie des Objekts. Wenn nun $this innerhalb der Klasse verwendet wird, bezieht es sich auf die aktuelle Instanz der Klasse. Die Zuordnung ohne & erzeugt eine Kopie der Instanz (d.h. des Objekts) und $this wird sich auf die Kopie beziehen. In der Regel will man aus Performance- und Speicherverbrausgründen nur eine einzige Instanz einer Klasse erzeugen.


pass-by-reference

Eine weitere Einsatzmöglichkeit von Referenzen ist die Übergabe von Parametern an eine Funktion mit pass-by-reference. Hierbei beziehen sich der lokale Variablenname als auch der Variablenname der aufrufenden Instanz auf denselben Variableninhalt:



<?php
function ausgabe(&$var) {
    return
$var++;
}

$zahl=5;
// Ausgabe (5)
echo ausgabe ($zahl);
// Ausgabe (6)
echo $zahl;
?>




return-by-reference

Daneben besteht die Möglichkeit aus Funktionen heraus Werte mit return-by-reference zurückzugeben. Das Zurückgeben von Ergebnissen per Referenz aus Funktionen heraus kann in manchen Fällen recht nüzlich sein. Hierbei ist folgende Syntax zu beachten:



<?php
function &ausgabe($param) {
    return
$param;
}

$wert =&ausgabe(5);
// Ausgabe (5)
echo $wert;
?>



In diesem Beispiel wird also die Eigenschaft des von ausgabe() gelieferten Wertes gesetzt, nicht die der Kopie, wie es der Fall wäre, wenn die Funktion ausgabe() ihr Ergebnis nicht per Referenz liefern würde.

Achtung: Im Gegensatz zur Parameterübergabe per Referenz ist bei der Rückgabe mittels Referenz an beiden Stellen die Angabe des & notwendig.



 


Was sind Referenzen?
 






© 2001-2005 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt
© 2005 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de