Mailinglisten-Archive |
Lutz Zetzsche wrote: > Hallo Joerg, > > Am Dienstag, 29. August 2006 15:34 schrieb Joerg Schoppet: > >> <code> >> class example { >> public static $extender = 'input'; >> } >> >> $sClassName = 'example'; >> >> echo $sClassName::$extender; >> </code> >> >> Der funktioniert nicht, sondern wirft nur folgenden Fehler: "*Parse >> error*: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM". >> > > eine Möglichkeit wäre, eine Zugriffsmethode für die statische Variable > zu definieren und dann mit call_user_func darauf zuzugreifen: > > class example { > private static $extender = 'input'; > public function getExtender() { > return self::$extender; > } > } > $sClassName = 'example'; > echo call_user_func(array($sClassName, 'getExtender')); > > Das wäre die sauberste Lösung, die mir gerade einfällt. > > Dinge, wie folgender Befehl, gehen natürlich auch, kommen aber nicht > ernsthaft in Frage: > > eval('echo '.$sClassName.'::$extender;'); > > > Viele Grüße > Lutz > Hi, ja, ist mir auch schon eingefallen. Das "Problem" dabei ist jedoch, dass ich dann in jeder Kind-Klasse sowohl die Variable $extender definieren muss (dass ist ja logisch) und auch die get-methode jeweils neu implementieren muss, da "self" immer nur auf die Klasse zugreift, in der es definiert ist. Dies entspricht aber dem schönen DRY-Prinzip. !?! Jörg
php::bar PHP Wiki - Listenarchive