In PHP können Parameter auf zwei Arten an Funktionen übergeben werden: als Wert und als Referenz. Bei der Übergabe als Wert arbeitet die Funktion mit einer Kopie des übergebenen Werts. Veränderungen, die die Funktion an dieser Kopie vornimmt, haben keine Auswirkungen auf den ursprünglichen Wert. Anders verhält es sich bei der Übergabe als Referenz: Hier arbeitet die Funktion direkt mit dem Originalwert, so dass Änderungen innerhalb der Funktion auch den ursprünglichen Wert beeinflussen.
Um Parameter als Referenz an eine Funktion in PHP zu übergeben, verwendet man das Kaufmanns-Und-Zeichen (&) vor dem Variablennamen im Funktionsparameter. Dies zeigt an, dass die Variable als Referenz und nicht als Wert übergeben wird. Hier ist ein einfaches Beispiel,
```php
function addFive(&$number) {
$number += 5;
}
$num = 10;
addFive($num);
echo $num; // Outputs: 15
?>
```
In diesem Beispiel wird die Variable `$num` mit einem Anfangswert von `10` erstellt. Wenn die `addFive`-Funktion aufgerufen wird und der Parameter `$number` als Referenz übergeben wird, führt das Hinzufügen von `5` innerhalb der Funktion dazu, dass auch der ursprüngliche Wert von `$num` geändert wird.
Wenn man den Parameter als Wert übergeben würde, würde der ursprüngliche Wert von `$num` unverändert bleiben:
```php
function addFive($number) {
$number += 5;
}
$num = 10;
addFive($num);
echo $num; // Outputs: 10
?>
```
Ein weiteres Beispiel zeigt, wie man ein Array als Referenz übergeben kann:
```php
function appendElement(&$arr) {
$arr[] = “neues Element”;
}
$array = [“erstes Element”];
appendElement($array);
print_r($array); // Outputs: Array ( [0] => erstes Element [1] => neues Element )
?>
```
Durch das Übergeben des Arrays `$array` als Referenz können wir Elemente innerhalb der Funktion `appendElement` hinzufügen, und diese Veränderungen spiegeln sich direkt im ursprünglichen Array wider.
Warum und wann sollte man Parameter als Referenz übergeben?
1. Effizienz: Wenn große Datenstrukturen wie Arrays oder Objekte übergeben werden, kann es effizienter sein, sie als Referenz zu übergeben, um Speicherplatz zu sparen und Kopien zu vermeiden.
2. Direkte Manipulation: Wenn die Funktion den ursprünglichen Wert verändern soll, ist die Übergabe durch Referenz notwendig. Zum Beispiel, wenn eine Funktion einen Zähler erhöhen oder Objekteigenschaften ändern soll.
Dieser Mechanismus ist besonders nützlich in Fällen, in denen die Veränderung der ursprünglichen Datenstruktur oder Variable gewollt ist.
Quellen:
- PHP Handbuch: [Referenzübergabe](https://www.php.net/manual/de/language.references.pass.php)
- W3Schools: [PHP Functions – Pass by Reference](https://www.w3schools.com/php/php_functions.asp)
Durch das richtige Verständnis und den bewussten Einsatz dieser Methode kann man in PHP effizientere und funktionalere Programme schreiben.