Mailinglisten-Archive |
Ulrich Hacke schrieb: > Hallo Liste, > beim Experimentieren mit Klassenstrukturen entstand folgender Code: > --snip-------------------------------------- > class c { > var $datum; > function c() { > $this->datum = date("d.m.Y"); > $this->zeit = date("H:i:s"); > } > } > $x = new c(); > $e = "zeit"; echo $x->{$e}; > --snap-------------------------------------- > Funktioniert ganz wunderbar: ich kann zur Laufzeit meiner Klasse neue > Eigenschaften zuweisen bzw. Eigenschaften nach dem Modell der variablen > Variablen auslesen. Sieht in meinen Augen irgendwie unsauber aus Ja, ganz sauber ist es nicht. Ist vielleicht ein wenig pingelich, aber wenn es etwas mehr Code wird, kannst du dir sowas nicht erlauben. Probiers mal so: <?php class c { //Interface var $datum; var $zeit; function c() { $dtJetzt=time(); $this->datum = date("d.m.Y",$dtJetzt); $this->zeit = date("H:i:s",$dtJetzt); } } $x = new c(); $e = "zeit"; echo $x->{$e}; ?> > und ich war > auch erstaunt, dass das überhaupt geht. Wieso nicht, man könnte ja auch so schreiben, und schon ist es offensichtlicher. echo $x->{$e}; echo $x->{"zeit"}; > Dazu meine Fragen: ist das so > gewollt oder (nur) ein Problem des Interpreters? Bug oder Feature? Kann ich > mich darauf verlassen, dass solche Konstrukte auch in späteren PHP-versionen > funktionieren? Ist auf jeden Fall ein Feature und liegt darin begründet, wie Variablen intern behandelt werden. Wenn nicht rigoros an PHP geändert wird, geht das auch in Zukunft. -- Gruß, Rob
php::bar PHP Wiki - Listenarchive