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