dedlfix: Funktion optional Referenz

Beitrag lesen

echo $begrüßung;

funktionen sind "blackboxen", welche eine eingabe bekommen und eine ausgabe liefern: ausgabe = funktion(eingabe)
daher sollten ausgaben nicht als argumente übergeben werden, sondern im return-statement.

Soweit zur Theorie. Doch selbst einige PHP-eigene Funktionen halten sich nicht konsequent an diese.
Beispiel: asort()

Richtigerweise wäre wohl eine Exception auszulösen, wenn die Funktion einen Fehler während der Verarbeitung feststellt. Diese Möglichkeit wird gern noch übersehen, so auch bisher in diesem Thread (mich eingeschlossen), weil sie erst seit PHP5 zur Verfügung steht.

In PHP5.x habe ich es so gelöst:
function test($wert,&$return = 0);

das & bewirkt eine refenz, also pointer, welcher auf die originale speicheradresse zeigt. wenn der interpreter deine funktion übersetzt, soll er &$return auf 0 setzen. hier bekommt der interpreter ein problem, da die adresse von $return zu diesem zeitpunkt nicht bekannt ist.

Theoretisch wäre es so. Doch PHP5 hat offensichtlich kein Problem damit. Dann wird die Variable eben für die Laufzeit der Funktion wie ein ganz normaler (optionaler) Parameter mit dem angegebenen Default-Wert angelegt und am Ende der belegte Speicherplatz freigegeben. Der Aufrufer war ja sowieso nicht an einer Rückgabe interessiert.

echo "$verabschiedung $name";