phpbar.de logo

Mailinglisten-Archive

[php] [php5] Namen der Klasse bei statischem Methodenaufruf

[php] [php5] Namen der Klasse bei statischem Methodenaufruf

Johannes Schlueter schlueter at phpbar.de
Fre Apr 30 14:40:28 CEST 2004


Hi,

ich habe zwei PHP5 Klassen (oder später auch mehr), wobei die eine (bzw. die 
vielen) von der anderen abgeleitet ist. Nun habe ich eine Methode in der 
Basis-Klasse, die statisch aufgerufen wird. In der möchte ich gerne den Namen 
der aufgerufenen Klasse haben. Hat jemand eine Idee wie ich da ran komme?
Das Problem ist, dass beim statischen Aufrufen kein $this zur Verfügung steht 
und sowas wie get_class() somit nicht geht und __CLASS__ auch den Namen der 
Klasse in der es steht zurück liefert.

Etwas Source zur Verdeutlichung:

<?php
class base {
    static function foo() {
        return MEIN_NAME;
    }
}

class extended extends base {
}

echo base::foo(); // soll base ausgeben
echo extended::foo(); // soll extended ausgeben
?>

Momentane Lösung ist, dass ich die foo() in extended überlade, dort 
mit__CLASS__ den Namen hole und als zusätzlichen Parameter an parent::foo() 
übergebe - wirklich gefallen tut es mir nicht und ich denke, dass es doch 
wohl einfacher gehen muss ;-)

johannes

php::bar PHP Wiki   -   Listenarchive