PHP - Grundlagen - Referenzen
1. Das Prinzip
Mit einer Referenz legt man fest, dass alle Variablen einen identischen Wert haben. Oder genauer gesagt, dass sie auf denselben
Inhalt verweisen. Um das zu erreichen, wird das &
vorangestellt.
<?php
$blubb = 10;
$blubber = &$blubb;
$blubb++;
// Ergibt 11 für $blubb und $blubber
echo $blubb.'-'.$blubber;
?>
2. Referenzvariablen bei Funktionen
Wenn man einer Funktion einen Parameter übergibt, so ist dieser normalerweise nur innerhalb der Funktion verfügbar, da es sich um eine lokale Variable handelt. Oder genauer gesagt, wenn man den Wert des Parameters ändert, so geschieht dies nur innerhalb der besagten Funktion.
Allerdings kann es vorkommen, dass man den geänderten Wert auch noch woanders benötigt. Nun, man könnte dann die entsprechende
Variable als global
definieren, was aber meiner Meinung nach nicht so glücklich ist. Als Alternative legt man sie
als Referenz fest.
Ein Beispiel
<?php
function rechneUm(&$euro)
{
$euro = $euro * 1.6;
}
$dollar = 20;
rechneUm($dollar);
echo $dollar;
?>
Erläuterung
Mit dem &
vor dem Parameter $euro
der Funktion rechneUm
erstellen wir eine Referenz.
Das bedeutet, dass die übergebene Variable $dollar
augenblicklich ihren Wert ändert, sobald man die entsprechende
Funktion aufruft. Wichtig dabei ist, dass man innerhalb der entsprechenden Funktion den selben Variablennamen
benutzt, der als Parameter übergeben wurde.
3. Funktionen als Referenz
Man kann obiges Beispiel auch so umsetzen. Ob das nun sinnvoll ist oder nicht, bleibt dahingestellt. Außerdem soll es mittlerweile als "deprecated" eingestuft worden sein, soll also heißen, es wird missbilligt.
<?php
function &rechneUm($euro)
{
$euro = $euro * 1.6;
}
$dollar = 20;
rechneUm(&$dollar);
echo $dollar;
?>
Erläuterung
Anstatt eine Referenz auf den Parameter einer Variablen zu erzeugen, wird diesmal eine Referenz auf die Funktion gesetzt
(function &rechneUm
). Das Ergebnis ist dasselbe wie beim ersten Beispiel, nur die Umsetzung ist ein klein
wenig anders.
4. Rückgabewert einer Funktion
Auch den kann man als Referenz festlegen, indem man die Funktion als solche mit einem &
auszeichnet und dann
genau so aufruft:
<?php
function &bla ()
{
$blubb = 'blubber';
return $blubb;
}
$laber = &bla();
$laber = 'schwall';
// Ergibt 'blubber'
echo bla();
?>
Erläuterung
Im Gegensatz zu obigem Beispiel wird nicht nur die Funktion als Referenz angelegt (function &bla
), sondern
auch der Aufruf ($laber = &bla();
). Damit wird der Rückgabewert dann zur eigentlichen Referenz.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt