Hauptmenü

Untermenü

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