dedlfix: Unterschied call by value vs. call by reference

Beitrag lesen

echo $begrüßung;

  1. Kann man call by reference [...] prinzipiell der Übersichtlichkeit/ Sicherheit wegen durch [...] ersetzen?

Prinzipiell kann man das nicht beantworten. Prinzipell sollte man aber Referenzen nur dann verwenden, wenn es technisch notwendig ist. (Vergleiche: http://de.php.net/manual/en/language.references.return.php)

  1. Ist call by reference (bemerkbar) schneller? V. a. bei Übergaben, die sehr viel Inhalt haben.

Sicher nicht, denn PHP fertigt nicht wirklich eine Kopie an. Erst wenn die Werte auseinander laufen wird die Kopie erstellt. Das Erzeugen der Referenz verbraucht auch Zeit. Außerdem ist es sicher ein Unterschied, ob du eine komplexe Struktur (Array, Objekt) hast oder nur einen großen String. Letzterer sollte sich in einem Zug kopieren lassen, die anderen eher nicht.

Literaturtipp: References Explained (by Derick Rethans) (Dieser Link versteckt sich im PHP-Handbuch unter debug_zval_dump().)

  1. In welchen Situationen ist call by reference sinnvoll anzuwenden?

Wenn du eine Referenz auf die originalen Daten benötigst. Das gilt aber nicht für Objekte unter PHP5, denn die werden immer als Referenz übergeben. Hier musst du clone verwenden, um eine Kopie zu erzeugen.

  1. Wann ist ein per Aufruf gesetzter call by reference sinnvoll?

Nur dann, wenn man allow_call_time_pass_reference eingeschaltet hat und nachdem man die Beschreibung dazu gelesen hat. ;-)
Außerdem ist es notwendig, wenn man unter PHP4 eine Methode als callback angeben möchte.

echo "$verabschiedung $name";