Mailinglisten-Archive |
Oliver Kummerow wrote: > > Hallo, > > ist folgendes "legal" oder eher ein Hack: > > $Objekt->$varname > > Über die Verwendung von $varname lassen sich Objekt-, bzw. dern > Instanzvariable parametrisiert abfragen. Wenn man davon ausgeht, > das Objekte eine spezialisierte Anwendung von Arrays sind, sollte > es wohl ok sein? Naja, es geht einiges, trotzdem würde ich die Finger davon lassen. Es kommt kein gut lesbarer Code dabei raus. <?php class foo { var $bar = "barfoo"; var $barfoo = "barfoo class var"; var $foobar = "foobar inside class"; function foo() { $barfoo = "barfoo"; print "Local using class: ".${$this->bar}."<hr>"; # Mit keyword $this den "nächst" großeren Scope ansprechen. print "Class using local: ".$this->$barfoo."<hr>"; print "Class using class: ".$this->${$this->bar}."<hr>"; } } $f = new foo; $barfoo = "foobar"; print "Global using object: ".${$f->bar}."<hr>"; # Mit dem Objekt das Objekt ansprechen. print "Object using object: ".$f->${$f->bar}."<hr>"; ?> Eigentlich sollte man solchen Code gar nicht erst posten. $$foo/${$foo} ist was für den sparsamen Einsatz. Es gibt einige, wenige Stellen an denen es hilfreich ist, im obigen Code sicherlich nicht. Warum das auch mit Objekten geht? Objekte nur ein normaler Variablentyp in PHP. Verwirrend ist das alles schon, wenn man bedenkt das ein Objekt irgendwie auch noch eine Referenz ist... Laß einfach die Finger davon. Es wurde komplett implementiert, ist aber kein guter Stil. Ulf
php::bar PHP Wiki - Listenarchive