heinetz: PHP4!=PHP5

Beitrag lesen

Hallo Forum,

vorab:objektorientiertes PHP ist mir leider immernoch fremd.

Nun stehe ich vor einer Aufgabe, ein fremdes Skript zu debuggen, dass mal mit PHP4 lief, nun aber mit PHP5 Probleme macht. Ich habe mich bis zu einem Punkt durchgekämpft, wo ein unterschiedliches Verhalten sichtbar wird.

Im Code wird relativ zum Anfang die Variable $add_field gefüllt.

#62 $add_field=new formular('tcr_tc_addfield','addfield');  
#63 $add_field->init_database($server, $db, $user, $passwort);  
#64 $add_field->set_dialogdatas($feldbezeichner_neu, $dialogelemente_addfield);  
#65 $add_field->inline_form();

Wenn ich das richtig deute, ist die Variable $add_field hinterher ein Objekt, und zwar eine Instanz der Klasse 'Formular'. Richtig?

Einige Zeilen später:

#85 $meinformular = new formular('tcr_tc_documents', 'doc');

… wird $meinformular als weitere Instanz der Klasse definiert und noch weiter unten steht…

#119 $meinformular->subformular['addfield']['neu']=$add_field;

… der Wert der Varaiblen $add_field wird einer Eigenschaft(?) von $meinformular zugewiesen.
Und genau da scheint das Problem zu sein! Denn später wird mit:

#127 $meinformular->subformular['addfield']['neu']->set_data_id("addfield[neu]");

… diese Eigenschaft manipuliert. Aber eben nicht, denn ausserdem hat sich $add_field verändert.
Ich deute das so, dass mit PHP5 in Zeile #119 nicht der Wert von $add_field in $meinformular->subformular['addfield']['neu'] geschrieben wird, sondern eine Referenz auf $add_field und damit in #127 das Original verändert wird … was zu dem Problem führt.

Deute ich das alles richtig und wenn ja,

wie lässt sich das umgehen?

danke und gruss,
heinetz