Hier im Forum bekommt ihr bei euren fragen schnelle hilfe.Hier geht es rund um das Web SeitenProgrammieren.Alles rund ums Javascript,Html,Php,Css und Sql.Auf fast allen Fragen haben wir eine Antwort.
Der Soforthilfe-chat verspricht das ,was sein Name sagt. Hier sind Leute Online die sofort ihre hilfe anbieten.Seht in der OnlineListe nach und wenn einer Online ist werdet ihr auch antwort bekommen. Admine ,Moderatoren und Helfer sind unsere Spezialisten in Sachen Web Programierung
71 Unwetterwarnungen in Deutschland
Die Datenbank wurde zuletzt am 02.08.2020 17:34:28 aktualiesiert
71

Objekte werden per Referenz übergeben – oder?

Beim Durchstöbern von Rudi’s PHP Labor bin ich auf diesen interessanten Artikel gestoßen, den ich hier gern nochmal aufwärmen möchte.

Etwas Code zum warmwerden:

<?php function modify(StdClass $t) { 	$t->foo = 321; }  $instance = new StdClass; $instance->foo = 123; modify($instance); print $instance->foo; 

Und, was kommt raus? Richtig! 321! Schließlich wird eine Referenz des Objekts übergeben. Wenn ich nun aber in der modify-Funktion die Variable, überschreibe…

<?php function modify(StdClass $t) { 	$t = new StdClass; 	$t->foo = 321; }  $instance = new StdClass; $instance->foo = 123; modify($instance); print $instance->foo; 

… lautet das Ergebnis auf einmal 123! Also doch nicht ganz so referenzig. Das gewünschte (?) Verhalten lässt sich aber doch noch erzwingen. Indem man eine „echte“ Referenz draus macht (einziger Unterschied zum letzten Codeblock ist das & im Funktionsparameter):

function modify(StdClass &$t) { 	$t = new StdClass; 	$t->foo = 321; }  $instance = new StdClass; $instance->foo = 123; modify($instance); print $instance->foo; 

Und voilà: 321!